I Difetti Comuni Made in Database Design

Sè ochjate cun una basa di dati chì cuntene cintinara di ricordi o milioni di ricunniscenza, u basa di basa di dati hè sempre impurtante. Ùn solu ùn hà da ricuperà l'infurmazioni assai più faciuli, simplificà ancu espansione a basa di dati in u futuru. Sfurtunatamente, hè faciule per fallu in un pocu di tramu ch'elle ponu fà difficultà in u futuru.

Ci sò libri sanu sanu scrittu annantu à u sughjettu di nurmalizà una basa di dati, ma siddu avete bisogna sse cose sti mischuli cumuni, puderà andà à u pianu raghjone à u bellu basa di dati.

Base de Decima Base 1: Repeating Fields in una Table

Una regula bàsica di u pulgami per un bufusu basa di dati hè di ricanuscimentu e di ripetitazione di dati è di mette queste chjoppi ripetuta in a so propria tabella. I campi di repetitu in una tavula hè cumuni per quelli chì sò vinutu da u mondu di i spreadsheets, ma mentre chì i spreadsheets tendenu à esse chjappu per u disignu, i basi di a basa per esse relational. Ghjè da vede 2D à 3D.

Per furtuna, i campi repetitivi sò generalmente faciuli fà viaghjanu. Senza un ochji à questa tavula:

OrderID Product1 Product2 Produttore 3
1 Teddy Bears Jelly Beans
2 Jelly Beans

Chì succerate quandu un Ordine cuntene quattru produtti? Avemu bisognu di aghjunghje un altru campu à a tavula per sustene più di trè produtti. È se avemu criatu una applicazione clientale nantu à a tavula per aiuta di l'infurmazioni di dati, pudemu avè bisognu di mudificà cù u novu campu di produttu. E cumu truvamu tutti l'òrdini cun Jellybeans in l'ordine? Anu avaristi bisognu di ricerete ogni campu di produtori in a tavula cun una intrecciu SQL chì pò esse parechje: SELECT * FROM Products WHERE Product1 = 'Jelly Beans' O Product2 = 'Jelly Beans' O Product3 = 'Jelly Beans'.

Invece di avè una sola tavula chì strughja tutta l'infurmazioni inseme, avemu duvutu trè mesa chì cogni un pezzu d'infurmazioni distinta. In questu l'esempiu, avemu vulutu una tabella d'Ordine per infurmazione nantu à l'ordine stessu, una tavola Prodotti cù tutti i nostri prudutti è una tablet di Prudutti chì eranu ligati à l'ordine.

OrderID CustomerID Ordine Date Tuttu
1 7 1/24/17 19.99
2 9 25/01/17 24.99
ProductID Pruduttu Count
1 Teddy Bears 1
2 Jelly Beans 100
ProductDeridiumID ProductID OrderID
101 1 1
102 2 1

Avete chì ogni tavulu hè u so propiu campu di ID unicu. Questa hè a chjave primaria. Truvaremu tàvule cù un prifiritu chjaru principale per una chjave straniera in un altru tabella. Leghjite più nantu à e chjave primaria è i chjavi stranieri.

Chjave Base # 2: Incorporazione una Table in una Table

Questu hè un altru fallimentu cumuni, ma ùn solu ùn si distingue ancu quant'è i terreni repetitivi. Quandu designanu una basa di dati, voi vole assicurà chì tutti i dati in una tavulera riguarda à sè stessu. Ghjè cum'è u ghjocu di u zitellu annantu à spotting what is different. Sì avè una banana, una fragola, un peach è un televisor, u televiziu sanu hà prubbabbirmenti in un altru locu.

In u listessu filu, se tenete una tavola di vendite personne, tutte l'infurmazioni in questa tavulera anu riferite in modu specificu à questa vende. Qualchese l'infurmazioni extra chì ùn hè micca unicu per questa persona di vendita puderebbenu appartenent à un altru in u vostru basa di dati.

SalesID Primu Ultima Indirizzu Numeru di telefonu Uffiziu Office Numero
1 Sam Elliot 118 Main St, Austin, TX (215) 555-5858 Austin Downtown (212) 421-2412
2 Alice Smith 504 2nd Street, New York, NY (211) 122-1821 New York (East) (211) 855-4541
3 Joe Parrocchia 428 Aker St, Austin, TX (215) 545-5545 Austin Downtown (212) 421-2412

Mentre sta testa pò esse parechje chì hè tutte e cummerciu di vinditori, hà attu una tavola incubata in a tavula. Avete cume l'Office è OfficeNumber repite cù "Austin Downtown". Chì se cambia un numiru telefònicu telefunicu? Avete bisognu di aghjurnà un set uni di dati per un solu pezzu d'infurmazioni cambianti, chì ùn hè mai bona cosa. Questi campi deve esse trasladati à a so propria tabella.

SalesID Primu Ultima Indirizzu Numeru di telefonu OfficeID
1 Sam Elliot 118 Main St, Austin, TX (215) 555-5858 1
2 Alice Smith 504 2nd Street, New York, NY (211) 122-1821 2
3 Joe Parrocchia 428 Aker St, Austin, TX (215) 545-5545 1
OfficeID Uffiziu Office Numero
1 Austin Downtown (212) 421-2412
2 New York (East) (211) 855-4541

Stu tipu di disignu dà ancu a capacità di aghjunghje infurmazioni addiziunale à a tavamula Uffiziu senza creà un nightmare di confusion in a tabella di vendita. Imagina quantu travagliu esse da simule seguità di l'indirizzu, cità, statali è codice postale chì tutte l'infurmazione era in a tabella di a vendita!

Base de Decima Base # 3: Pudete dui o più Piezi d'informazioni in un Campu Unicu

Incrustare l'infurmazioni uffiziale in a tabella di a vendita ùn hè micca solu u prublema cun questa basa di dati. U campu di indirizzu cuntene trè pezzi d'infurmazioni: l'indirizzu, a cità è l'statu. Ogni terrenu in a basa di dati ùn deve cuntene un solu pezzu di informazioni. Quandu avete parechji pezzi di nfurmazzioni in un solu campo, pò esse più difficili per a dumanda di a basa di dati per l'infurmazioni.

Per esempiu, chì si avemu vulutu dumandassi una ricerca di tutti i vente di vendita da Austin? Avemu bisognu di ricercà in l'indirizzu campu, chì ùn hè micca solu ineficenti, ma pò detti l'informazioni malei. Dopu tuttu, chì succevi si qualcunu hà vicinu à a strada di Austin in Portland, Oregon?

Eccu ciò chì a tavulinu deve aspetta:

SalesID Primu Ultima Indirizzu1 Address2 Cità Statu Zip Phone
1 Sam Elliot 118 Main St Austin TX 78720 2155555858
2 Alice Smith 504 2u St New York NY 10022 2111221821
3 Joe Parrocchia 428 Aker St Apt 304 Austin TX 78716 2155455545

Ci hè un coppiu di cose per falla quì. Prima, "Address1" è "Address2" parvenenu cascà sutta l'esche in u duminiu ripetitivi.

In ogni casu, sò quissi riferenu à e persone di sorta di dati chì anu diretti direttamente à u vente di vendita in lettu di un gruppu ripetuta di dati chì andavanu da esse in u so propiu tabellu.

Inoltre, cum'è un bonu sbagliu per evitari, avessi chì u furmatu pè u numulu di telefunu hè stata riduta da a tavula. Avete bisognu di stà accunsente u formatu di campi chì quandu puderebbe possu. In u casu di numeri di telefuninu, ci sò parechji manere in scrivere un telèfonu: 215-555-5858 o (215) 555-5858. Questu puderebbenu cercà un venditore cù u so numiru telefònicu o fà una ricerca di vente sales in u listessu còdici di u nome più difughu.

Base de Dej Di Chjesa # 4: Ùn Utilizà micca una Chjave Primariu Correct

In a maiò parte, avete da vulete utilizà un numicu d'incrementu automaticamente o qualchì altru numiru generatu o alfanumericu per a vostra chjave primaria. Avete bisognu di esse di utilizà nisuna infurmazione propria per a chjave primaria, ancu se so avutu averà un bonu identificatore.

Per esempiu, ognunu anu u nostru numaru stessu suciale suciale suciale, cusì usando un numaru di segurità suciale per una basa di dati hè pussibile cum'è una bona idea. Ma mentre è raru, hè pussibile ancu di un mudellu di segurità suciale, è ùn avemu mai vulutu a nostra chjave primaria per cambià.

E questu hè u prublema cù l'infurmazioni cum'è a valuta di u valore. Pudete cambià.

Base de Decima Base # 5: Not Utilizando un Convencion De Naming

Questu pò ùn senti micca cum'è un big deal quan u principiu hà principiatu à designà a vostra basa di dati, ma quandu avete da scrive questi di scrivite contr'à a basa di dati per retrieve l'infurmazioni, avè una cunvenzione di nomenclatura aiutari quantu memorizza i nomi di campu.

Imagine quantu più difficiulmente chì u prucessu seria sete nomi sò stati guardati cum'è FirstName, LastName in una tavula è first_name, last_name in un altru tabella.

I dui cunvenzione di nomi più frequenti sò a capitalizazione di a prima lettera di ogni parolla in u campu o siparendu e parolle chì utilizanu un underscore. Pudete vede parechji sviluppatori capitalizing a first letter of every word minà i primi paroli: firstName, lastName.

Vulete ancu vulete decisione nantu à usu di nomi di tavulà singulari o nomi varietale di tavuletta. Hè una Ordine Ordine o una Ordine Table? Hè una Table di Clienti o a Table di Clienti? Una volta, ùn vogliu micca stati preso cù una Ordine di Table è una Table di Clienti.

A cunvenzione di nome chì sceglite ùn hè micca quantu impurtante cum'è u prucessu di fà scelte è fendu una convenzione di nome.

Base de Decima Base # 6: Indexazione Improperu

L'indexazione hè una di e cose più bassine per avè u dirittu, in particulari per quelli novi in ​​a basa di dati. Tutte e chjardu primariu è i chjavi stranieri sò indettati. Sò quì chì ligami liganu inseme, cusì senza un'indimu, vi vede un rendiment imprecisu da a vostra basa di dati.

Ma chì sò troppu spessu misstu à l'altri campi. Sò quì i campi "induva". Sì avete avete spessu a ristarià a vostra ricerca uttenimentu cù u campu in una clàglica ON SINCE, vulete pinsà di mette un indice nantu à quì campu. In ogni casu, ùn vogliu micca fà indettà à a tavula, chì pò ancu ferite u spettaculu.

Comu decide? Questu hè parte di l'arti di designu di basa di dati. Ùn ci hè micca un limite duru di quanti indùttimi chì avete dettu nantu à una tavula. In u primu, vulete indexà qualsiasi campu chì hè spessu usatu in una clàccia ON ONLINE. Leghjite più nantu à indegni in a vostra basa di dati.