Esiste una convenzione di denominazione per MySQL?

Ecco come lo faccio:

  1. I nomi delle tabelle sono in minuscolo, usano caratteri di sottolineatura per separare le parole e sono singolari (ad es. “Foo”, “foo_bar”, ecc.
  2. Generalmente (non sempre) ho un incremento automatico PK. Uso la seguente convenzione: tablename_id (ad es. ‘Foo_id’, ‘foo_bar_id’, ecc.).
  3. Quando una tabella contiene una colonna che è una chiave esterna, copio solo il nome della colonna di quella chiave da qualunque tabella provenga. Ad esempio, supponiamo che la tabella “foo_bar” abbia l’FK “foo_id” (dove “foo_id” è il PK di “foo”).
  4. Quando definisco gli FK per forzare l’integrità referenziale, io uso il seguente: tablename_fk_columnname (es. Seguendo l’esempio 3, sarebbe “foo_bar_foo_id”). Poiché si tratta di una combinazione nome / nome tabella, è garantito che sia univoco all’interno del database.
  5. Ordino le colonne in questo modo: PK, FK, quindi il resto delle colonne in ordine alfabetico

C’è un modo migliore, più standard per farlo?

Direi che prima di tutto: essere coerenti.

Suppongo che tu sia quasi arrivato con le convenzioni che hai delineato nella tua domanda. Un paio di commenti però:

I punti 1 e 2 sono buoni.

Punto 3 – purtroppo questo non è sempre ansible. Pensa a come faresti fronte a una singola tabella foo_bar che contiene le colonne foo_id e foo_id che fanno riferimento alla colonna foo_id tabella foo . Si potrebbe voler considerare come affrontare questo. Questo è un po ‘un caso d’angolo però!

Punto 4 – Simile al punto 3. È ansible introdurre un numero alla fine del nome della chiave esterna per soddisfare più colonne di riferimento.

Punto 5 – Eviterei questo. Ti fornisce poco e diventerà un mal di testa quando si desidera aggiungere o rimuovere colonne da una tabella in un secondo momento.

Alcuni altri punti sono:

Convenzioni di denominazione degli indici

Potresti voler introdurre una convenzione di denominazione per gli indici – questo sarà di grande aiuto per qualsiasi lavoro sui metadati del database che potresti voler eseguire. Ad esempio potresti semplicemente voler chiamare un indice foo_bar_idx1 o foo_idx1 – totalmente a tuo carico, ma che vale la pena considerare.

Nomi di colonna Singular vs Plural

Potrebbe essere una buona idea affrontare il problema spinoso di plurale vs singolo nei nomi delle colonne e anche i nomi delle tabelle. Questo argomento causa spesso grandi dibattiti nella comunità DB. Attaccherei con forms singolari sia per i nomi di tabelle che per le colonne. Là. L’ho detto

La cosa principale qui è ovviamente la coerenza!

La coerenza è la chiave per qualsiasi standard di denominazione. Finché è logico e coerente, sei al 99%.

Lo standard in sé è molto personale, quindi se ti piace il tuo standard, allora corri con esso.

Per rispondere alla tua domanda a titolo definitivo – no, MySQL non ha una convenzione / standard di denominazione preferita, quindi il tuo rollover va bene (e il tuo sembra logico).

MySQL ha una breve descrizione delle loro regole più o meno rigide:

https://dev.mysql.com/doc/internals/en/coding-style.html

Lo stile di codifica più comune per MySQL di Simon Holywell:

http://www.sqlstyle.guide/

Vedi anche questa domanda: ci sono delle linee guida sullo stile di codifica pubblicate per SQL?

Per fortuna, gli sviluppatori PHP non sono “bigotti del caso Camel” come alcune comunità di sviluppo che conosco.

Le tue convenzioni suonano bene.

Solo finché sono a) semplici, e b) coerenti – Non vedo alcun problema 🙂

PS: Personalmente, penso 5) è eccessivo …