Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Son Tran
Laravel ERD: Draw It From the Migration Files or From the Database?
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Draw a Laravel ERD from the database that php artisan migrate built, not from the migration files. In Invoice Ninja v5.13.47 a fresh migrate loads a squashed schema dump and then runs only 61 of the 317 files, and that dump is 10 tables and 43 columns behind the release that ships it.
pgvector: Embedding Column on the Table or a Separate Embeddings Table?
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Put the embedding where the row it describes is written least. A document that is chunked needs a chunks table anyway; an embedding that will be regenerated by a second model belongs in its own table keyed by chunk and model, with an untyped vector column.
Round-Tripping Campfire and Jellyfin Through a Database Diagram: What SQLite Lost and What We Fixed
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: We put two real SQLite schemas, Campfire (Rails 8) and Jellyfin (Entity Framework Core 10), through Schemity and rebuilt a database file from the SQL it wrote.
Round-Tripping Bitwarden and Smartstore Through a Database Diagram: What SQL Server Lost and What We Fixed
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: We put two real SQL Server schemas, Bitwarden (a SQL Server database project) and Smartstore (Entity Framework Core), through Schemity and rebuilt a database from the SQL it wrote.
Round-Tripping TPC-DS and a Snowflake Feature Schema Through a Database Diagram: What Snowflake Lost and What We Fixed
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: We put two Snowflake schemas through Schemity, TPC-DS as Snowflake ships it and a hand-written schema using Snowflake's own features, and rebuilt each in a fresh schema from the SQL Schemity wrote.
PostgreSQL serial vs identity: Which to Use, and How to Convert Old serial Columns
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Use GENERATED ALWAYS AS IDENTITY for new tables. serial is a shortcut for a separate sequence plus a default, so the column and its counter drift apart: an explicit id breaks the next insert, a widened key still stops at 2,147,483,647, and a copied table shares the counter. An existing serial key converts to identity in a few milliseconds, with no table rewrite.
A PostgreSQL Role That Reads the Schema but Not the Data: What to Grant
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Grant CONNECT on the database and USAGE on the schema, and nothing on the tables: the role can then read the whole structure from pg_catalog while every SELECT on a table fails with permission denied.
Changing a Column Type in SQLite: The Table Rebuild and What It Deletes
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: SQLite cannot change a column's type in place, so you copy the table into a new one with the right type, drop the old one and rename.
ON DELETE SET NULL vs CASCADE vs RESTRICT in PostgreSQL: Which to Use
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Pick the action by what the child row means once its parent is gone: CASCADE when it means nothing, SET NULL when it stays valid with the link removed, and RESTRICT or NO ACTION when it is a record that must not change behind anyone's back.
Database MCP Server: Should an AI Agent Run SQL or Only Read the Schema?
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: For schema work an AI agent needs the structure, not the rows, so give it a database MCP server that exposes the schema and no SQL tool. When a task does need rows, guard it with a database role that owns nothing. A READ ONLY transaction alone is not a guard: the reference Postgres MCP server relied on one, and a single COMMIT; DROP TABLE sent as one query ended it.
PostgreSQL numeric vs double precision vs money: Which Type to Use for Prices
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Store prices and other amounts of money as numeric with a declared scale, such as numeric(12,2). A double precision column cannot hold 0.10 exactly, and in a 1,000,000-row test its sum() gave a different answer on each parallel run. The money type is exact but ties its fractional digits and output to the server's lc_monetary locale, stores no currency, and truncates on division.
PostgreSQL Generated Column vs Trigger: Which to Use for a Derived Column
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Use a generated column when the value comes from other columns in the same row through immutable functions, because the database guarantees it and nobody can write to it. Use a trigger only when the value needs another table, the current time, or a function PostgreSQL does not call immutable.
Polymorphic Associations in PostgreSQL: One commentable_id Column or a Foreign Key per Table?
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: A polymorphic association stores a type name and an id in two columns, and PostgreSQL has no foreign key that can point at a different table on each row, so nothing stops orphans or typos. For a small fixed set of parents, use one nullable foreign key per parent with a CHECK that exactly one is set; for many parents, use a shared supertype table.
When CKM Syndrome Stage Is Not a Severity Scale: Audiometric Hearing Thresholds in Older U.S. Adults
The authors have declared no competing interest. I confirm all relevant ethical guidelines have been followed, and any necessary IRB and/or ethics committee approvals have been obtained.
Column Comments in PostgreSQL and MySQL: How to Document Columns Without a Migration
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: The database has a built-in place to document a column - COMMENT ON COLUMN in PostgreSQL, the COMMENT attribute in MySQL - and almost nobody fills it in, because a sentence of prose has to travel the same path as a schema change: a migration file, a review, a deploy.
PostgreSQL timestamp vs timestamptz: Which to Use and How to Find the Wrong Ones
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Use timestamptz for anything that records when something happened, and timestamp only for a wall-clock time meant to read the same in every zone. Both types occupy 8 bytes, so the correct one is free, but Rails and Prisma both default to the naive one, which is how a schema ends up with hundreds of columns nobody chose.
Circular Foreign Keys: Why the First Row Cannot Be Inserted
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: When foreign keys form a cycle and every column in it is NOT NULL, each insert needs a row that does not exist yet, so an empty database can never take its first row. The cycle is a property of the whole graph rather than of any one relationship, so nobody spots it by looking at the diagram - it surfaces at seed time on a fresh environment.
Export a Database Data Dictionary: HTML, Markdown and Excel from Your ERD
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: The people who most need to read your schema - auditors, analysts, a new hire on day one - will never install your ERD tool, so the documentation gets retyped into a spreadsheet or replaced by a picture that answers nothing.
Postgres Array Column vs Junction Table: What Each One Does to Your ERD
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: A PostgreSQL array column stores a list in one field and can be several times faster to query than a junction table, but the database cannot put a foreign key on array elements, so an array of IDs is a many-to-many relationship that no ERD can draw.
You Cannot Tell Which of Your ERD Files Are Under Version Control
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: A diagram stored as a file is only version controlled if its folder happens to sit inside a Git repository, and nothing in the tool tells you whether it does - so the safest-feeling diagrams are often the untracked ones.
Database Views in Your ERD: Read-Only Entities, Not Fake Tables
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Database views carry real responsibilities - reporting layers, security boundaries, API surfaces - but ERD tools either leave them out entirely (DBML has no view support despite requests since 2022) or draw them as if they were ordinary tables.
SSMS Database Diagrams: Your ERD Is Trapped Inside the Database It Documents
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: SSMS keeps every database diagram as a binary blob in the sysdiagrams system table of the database it describes, so it cannot be saved to a file, versioned in Git, or opened without a server connection - and the feature itself was removed in SSMS 18.0 and restored in 18.1 only after user outcry.
Lucidchart ERD Alternative: A Desktop ERD Tool That Connects to Your Database
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Lucidchart draws entity relationship diagrams on a general-purpose canvas, so the schema has to be carried in by hand: run a query, export a CSV, upload it, then drag tables onto the canvas one at a time.
Many-to-Many in an ERD Shouldn't Mean Hand-Building the Junction Table
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Relational databases cannot store a many-to-many relationship directly, so most ERD tools make you hand-build the junction table - Microsoft documents six manual steps for one relationship.
Your DDD Context Map Is Already in Your Foreign Keys
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Hand-drawn context maps go stale because nothing ties them to the schema, and cross-context coupling stays invisible until an extraction fails. Schemity's Context Map derives the map from your foreign keys: each context view becomes one node, arrows show dependency direction with a foreign key count, and double-clicking an arrow lists the exact foreign keys behind it.
Why ERD Tools Draw Your 1:1 Relationship as 1:N
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: A 1:1 relationship in SQL is nothing but a foreign key with a unique constraint, so any tool that reads the key and ignores the constraint draws it as 1:N - a bug reported against MySQL Workbench in 2009 and against dbdiagram in 2025.
Why Your ERD Export Turns Blurry - and How SVG Export Fixes It
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: PNG and JPEG exports of a schema diagram have a fixed resolution, so they blur the moment someone zooms in, and large diagrams get cropped or produce enormous files.
Schemity vs ChartDB: The Offline Desktop Alternative
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: ChartDB is the strongest cloud schema visualizer, but the cloud is the product. Schemity is the offline desktop alternative: local JSON storage, Git-native versioning, BYOK AI, and reviewed migrations - for when the diagram can't leave your machine.
Entity Templates: How to Stop Schema Naming and Field-Order Drift
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Schemas drift because every table starts from a blank slate. Schemity makes consistency the default with entity templates, convention-aware field placement, and per-connection foreign key naming - your conventions live in the tool, not the wiki.
The Data Dictionary Should Live in the ERD, Not in a Spreadsheet
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: The meaning of a schema - what tables are for, who owns them, why a grouping exists - usually lives in heads, spreadsheets, or wikis that drift out of date. Schemity attaches markdown descriptions to entities, legends, and context views, shown behind a file icon on the diagram itself, so the data dictionary lives inside the ERD and stays where the schema is.
You Cannot Judge Coupling and Cohesion From the Same View
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Coupling and cohesion are questions at two different scales, and one diagram cannot answer both. Schemity's main view shows the cross-context edges that measure coupling; its context views isolate one domain to judge cohesion. Every engineer can recite the goal: low coupling, high cohesion. Fewer dependencies between modules, more relatedness inside each one.
AI Help With Your Database Design, Without the Cloud
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: You want AI help with schema design, but NDA and IT policy forbid pasting schemas into cloud AI tools. Schemity's BYOK AI chat sends requests directly from your desktop to your chosen provider with your own key - no vendor server in the middle. AI is genuinely good at schema design.
Database Context Views Should Show the Relationships They Hide
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Focused sub-diagrams remove noise, but they also remove context. In Schemity, a context view pays that back: an orange dot marks every entity with relationships outside the view, so a focused diagram never lies about being complete. A database context view removes context on purpose - and part of what it removes is every relationship that reaches entities outside the view.
Your Client's Schema Doesn't Belong in Your Cloud Account
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Consultants juggling client engagements in one shared cloud account cannot guarantee NDA isolation or true deletion. Schemity keeps each client in a local workspace - a folder of JSON files - so isolation is physical and offboarding is a folder handover.
Stop Hand-Translating Between SQL and Your ERD
Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Most diagram tools force manual translation: retyping SQL dumps into boxes, then hand-writing ALTER statements from diagram edits. Schemity imports SQL to generate the ERD and turns diagram edits into a reviewed migration SQL diff - both directions automated.
Benchmarking deep learning models for laryngeal cancer staging using the LaryngealCT dataset
Abstract Laryngeal cancer imaging research lacks standardised public datasets to enable reproducible deep learning (DL) model development. We present LaryngealCT, a curated benchmark of 1,029 computed tomography (CT) scans aggregated from six collections from The Cancer Imaging Archive (TCIA). Uniform 1 mm isotropic volumes of interest encompassing the larynx were extracted using a weakly supervised parameter search framework validated by clinical experts.
You Have Been Reading ERD Notation Wrong
If you have ever designed a database schema, you have probably drawn an ERD with crow's foot notation. You learned that a circle means optional, a line means mandatory, and a crow's foot means many. You felt confident. Then you opened your SQL editor and had to guess whether the FK should be NULL or NOT NULL. You were not sure if you needed UNIQUE. And nobody told you that one of the notation symbols cannot be enforced in SQL at all. This article fixes that.
Design Data Model for Multi-Tenant RBAC
Part 1: Identity Foundation Behavior Description Assume we are building a KPI management platform. Multiple companies can create accounts (tenants) and let their employees access the platform. A user can be assigned to one or several roles. Their permissions are the sum of those roles' permissions. A user cannot access features outside their permissions. Even if they know the API specs and bypass the UI, they will still be blocked at the API layer.
Schemity vs dbdiagram.io: When Your ERD Tool Needs to Outlive the Meeting
There's a moment every software engineer knows. You're explaining a new feature to a teammate. The schema is in your head. You need something visual, fast, right now. You open a browser tab, type dbdiagram.io, and in three minutes you have a diagram you can paste into Slack. The meeting happens. Everyone nods. The diagram link dies in the chat history. The actual schema lives in your database, unrelated to what you drew. That's not a failure of discipline. That's the ceiling of the tool.
Using transformer-based models for Vietnamese language detection
Loading metrics Open Access Peer-reviewed Research Article Citation: Tran S, Tran P (2026) Using transformer-based models for Vietnamese language detection. PLoS One 21(2): e0342898. https://doi.org/10.1371/journal.pone.0342898 Editor: Manuel Herrador, University of Jaen: Universidad de Jaen, SPAIN Received: December 15, 2025; Accepted: January 29, 2026; Published: February 13, 2026 Copyright: © 2026 Tran, Tran.
p-Terphenyls from the Fruiting Bodies of Boletopsis leucomelas with Neuroprotective, Anti-Neuroinflammatory, and Antioxidant Activities
Bioactive Constituents, Metabolites, and FunctionsDecember 26, 2025 Tam Thi Le Center for Natural Product Efficacy Optimization, Gangneung Institute of Natural Products, Korea Institute of Science and Technology, Gangneung, Gangwon-do 25451, Republic of Korea Son Hung Tran Center for Natural Product Systems Biology, Gangneung Institute of Natural Products, Korea Institute of Science and Technology, Gangneung, Gangwon-do 25451, Republic of Korea Natural Product Applied Science, KIST School,...
The Professor’s Corner By Dr. Son Tran - Tip #11 - Find Your Niche
What it Means Trying to serve everyone often means serving no one well. Finding a niche allows your business to specialize, become recognized for something specific, and attract loyal customers who value that expertise. It’s not about being small — it’s about being focused and distinctive. Stories from the Business World Dollar Shave Club began by targeting one narrow group: men frustrated with the high price and complexity of razors. Their humorous message — “Shave time.
The Matrix Reloaded: Why Crypto’s "Big Bang" is Rocking Wall Street and Your American Dream (By…
The Matrix Reloaded: Why Crypto’s "Big Bang" is Rocking Wall Street and Your American Dream Alright, buckle up, buttercups! Because what we’re witnessing isn’t just a pivot; it’s a full-blown financial paradigm shift. Forget your grandpappy’s banking; we’re in "Crypto’s Big Bang," and it’s not just shaking up the trading floors – it’s literally renovating the "American Dream." For decades, traditional finance has been like that old, dusty attic in your house.
Lacticaseibacillus casei HY2782 improves the intestinal barrier and tract environment and ultimately prolongs the lifespan of Caenorhabditis elegans
Lacticaseibacillus casei HY2782 improves the intestinal barrier and tract environment and ultimately prolongs the lifespan of Caenorhabditis elegans Caenorhabditis elegans is widely used as a model for investigating longevity due to its short life cycle and presence of human orthologs. This study aimed to ultimately prolong the lifespan of C. elegans by evaluating the gastrointestinal tract conditions and intestinal permeability of C.
Amazon Science at CVPR 2025
Friday, June 13 June 13 10:00am - 10:30am Research domains - Computer vision - Machine learning - MLLMs - Robotics 10:30am - 11:00am Research domains - Agents - Autonomous robots - Computer vision - Embodied AI - Estimation - Gen AI - Information retrieval - Mapping - MLLMs - Robotic perception 11:00am - 11:30am Research domains - 3D vision - Autonomous vehicles - Computer vision - Foundation models - Geospatial - Machine learning - Manipulation - MLLMs 11:30am - 12:00pm Research domains -...
Paraoxonase-like APMAP maintains endoplasmic-reticulum-associated lipid and lipoprotein homeostasis
Keywords paraoxonase PON endoplasmic reticulum ER lipoprotein redox homeostasis ceramide Get full text access Log in, subscribe or purchase for full access. References 1. Pizzino, G. ∙ Irrera, N. ∙ Cucinotta, M. ... Oxidative Stress: Harms and Benefits for Human Health Oxid. Med. Cell. Longev. 2017; 2017, 8416763 2. Forman, H.J. ∙ Zhang, H. Author Correction: Targeting oxidative stress in disease: promise and limitations of antioxidant therapy Nat. Rev. Drug Discov. 2021; 20, 652 3. Shunmoogam, N. ∙ Naidoo, P.
Furan Acids from Nutmeg and Their Neuroprotective and Anti-neuroinflammatory Activities
Bioactive Constituents, Metabolites, and FunctionsApril 25, 2025 Tam Thi Le Center for Natural Product Efficacy Optimization, Gangneung Institute of Natural Products, Korea Institute of Science and Technology, Gangwon-do 25451, Republic of Korea Son Hung Tran Center for Natural Product Systems Biology, Gangneung Institute of Natural Products, Korea Institute of Science and Technology, Gangwon-do 25451, Republic of Korea Natural Product Applied Science, KIST School, University of Science and...
Furan Acids from Nutmeg and Their Neuroprotective and Anti-neuroinflammatory Activities
Bioactive Constituents, Metabolites, and FunctionsApril 25, 2025 Tam Thi Le Center for Natural Product Efficacy Optimization, Gangneung Institute of Natural Products, Korea Institute of Science and Technology, Gangwon-do 25451, Republic of Korea Son Hung Tran Center for Natural Product Systems Biology, Gangneung Institute of Natural Products, Korea Institute of Science and Technology, Gangwon-do 25451, Republic of Korea Natural Product Applied Science, KIST School, University of Science and...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Son
Contact Son, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack