Базасы Дизайн жасалган Common каталар

Сиз жазылган жазуулардын жүздөгөн же миллиондогон ээлеген базасы менен иштеп жатабыз да, туура базасын дизайн дайыма маанилүү. Гана эмес, ал маалыматты алда канча кыйын алууда жардам берет, ошондой эле келечекте базасын өнүктүрүү иштерин жөнөкөйлөтүүгө мүмкүндүк түзөт. Тилекке каршы, бул келечекте баары кыйын болуп калат, бир нече тузагына түшүп калышы мүмкүн.

базасын жөнгөрүү жөнүндө жазуу жүзүндөгү бүт китептер бар, бирок сиз жөн гана бул жалпы ката кетирбөө, анда жакшы базасы жай үлгүсүнө болгон укук жолдо болот.

Базасы Mistake # 1: Тамагына Fields кайталоо

жакшы берилиштер базасынын негизги долбоорлоо үчүн бармагын бир негизги эрежеси кайталап маалыматтарды таануу жана алардын өз дасторконунан да кайталап жокторду коюп жатат. жадыбалда талааларды кайталап Электрондук жадыбалдар дүйнөгө келген адамдар үчүн жалпы болуп саналат, бирок, жадыбалдарды долбоорго ылайык жалпак болушу, ал эми эркектер базалары мамиледеги болушу керек. Бул 2D режиминен 3D бараткан сыяктуу.

Бактыга жараша, көп кайталануучу жана талаалар, адатта, табышы үчүн жеңил болот. Жөн гана бул дасторкондо карап:

OrderID Product1 Product2 Product3
1 Teddy Bears Jelly Beans
2 Jelly Beans

тартиби төрт камтыйт жатканда, эмне болот? Биз үч продуктыларын колдоо үчүн столго башка талаа кошуу керек. бизге киргизүү маалыматтарды жардам столдун тегерегинде кардар арыз курулган болсо, биз жаңы продукт талаа менен өзгөртүү керек болот. Анан кантип биз үчүн Jellybeans менен буйруктарынын баарын таба алабыз? Биз окшош болушу ыктымал SQL арыз менен столго, ар бир продукт талаасын суроо аргасыз болуп калышы мүмкүн: SELECT * Product1 = 'Jelly буурчагы "КАЙДА азыктары ЖЕ Product2 =' Jelly буурчагы" ЖЕ Product3 = 'Jelly Beans ".

бүт маалымат азыктар бир дасторкон бар Тескерисинче, ар бир маалыматты так бөлүгүн кармап, үч үстөлдөрүн болушу керек. Бул, мисалы, биз үчүн продуктуларды байланыштуу биздин буюмдардын баарын жана ProductOrders планшет менен максатында өзү, бир буюм стол жөнүндө маалымат менен ордендери дасторкон каалайсыз.

OrderID CustomerID Order Date Бардыгы болуп
1 7 1/24/17 19.99
2 9 1/25/17 24.99
ProductID продукт эсептөө
1 Teddy Bears 1
2 Jelly Beans 100
ProductOrderID ProductID OrderID
101 1 1
102 2 1

Ар бир стол өзүнүн уникалдуу ID талааны карап көрөлү. Бул негизги ачкыч болуп саналат. Биз дагы бир столдо чет ачкычы сыяктуу негизги ачкыч баасын колдонуу менен үстөлдөрүн -га шилтеме берген. негизги ачкыч, ал эми чет элдик ачкычтарынын Подробнее о.

Базасы Mistake # 2: Тамагына дасторкон Embedding

Бул дагы бир жаңылыштык болуп саналат, бирок, дайыма эле кайталанган тармактарда абдан көп чыгып келбейт. маалыматтар базасын иштеп жатканда, бир столдо маалыматтын баары өзүнөн-өзү тиешелүү текшерип келет. Бул ар кандай таап жөнүндө баланын оюну сыяктуу. Эгер банан бар болсо, кулпунайдын, бир шабдаалы жана сыналгы орнотууну, сыналгы, балким, башка жакка таандык болот.

ошол эле ойду сиз сатуу адамдардын үстөл бар болсо, ал столдун маалыматтын баарын сатуудан адамга атайын тиешелүү болушу керек. Ошол сатуу адамга уникалдуу эмес, ар кандай кошумча маалымат базасындагы башка жакка таандык болот.

SalesID Алгачкы акыркы дарек Тел номери Office OfficeNumber
1 Sam Эллиот 118 Негизги Сент, Austin, TX (215) 555-5858 Остин Downtown (212) 421-2412
2 Элис Smith 504 2 көчөсү, New York, NY (211) 122-1821 New York (East) (211) 855-4541
3 Жо чиркөө коому 428 Aker Сент, Austin, TX (215) 545-5545 Остин Downtown (212) 421-2412

Бул стол жеке ачуусу бардык байланыштуу ага окшош болушу мүмкүн, ал эми иш жүзүндө столдун алкагында камтылган үстөл бар. "Остин: User tr" менен Office кантип жана OfficeNumber кайрадан карап көрөлү. Эгерде иш тел номери өзгөрүүлөр кандай? Сен жакшы нерсе эч качан маалымат алмашууда, ар бир бөлүгү боюнча маалыматтардын толук комплектин тактоо керек. Бул талаа өз столго түрткү бериши керек.

SalesID Алгачкы акыркы дарек Тел номери OfficeID
1 Sam Эллиот 118 Негизги Сент, Austin, TX (215) 555-5858 1
2 Элис Smith 504 2 көчөсү, New York, NY (211) 122-1821 2
3 Жо чиркөө коому 428 Aker Сент, Austin, TX (215) 545-5545 1
OfficeID Office OfficeNumber
1 Остин Downtown (212) 421-2412
2 New York (East) (211) 855-4541

долбоорлоо бул түрү да силерге сатуу адам столго башаламандыктардын коркунучтуу түш түзүп туруп Office столго кошумча маалымат кошууга мүмкүндүк берет. Ошол маалыматтардын баарын сатуу адам дасторконго болгон болсо, ал жөн эле көчөдө, шаардык, мамлекеттик жана Почта индекси көзөмөлдөп туруш үчүн кандай боло турганы дагы көп жумуш дейли!

Базасы Mistake # 3: Single талаага маалымат эки же андан көп бөлүктөрү коюу

сатуу адам столдун салып кызматтык маалыматты колдонууга болгон маалыматтар базасы менен гана маселе эмес болчу. дареги талаа маалымат үч тыйын камтылган: дареги, шаардык жана мамлекеттик мүлк. маалыматтар базасын ар бир талаа гана маалыматтын бир бөлүгүн камтууга тийиш. Эгер бир тармагында маалыматтарды бир нече тыйын бар, бул маалымат үчүн маалымат базасын суроо кыйын болуп калышы мүмкүн.

Мисалы, биз Остин бардык сатуу элдин суроо чуркап келген, анда эмне болот? Биз бир гана натыйжалуу эмес, дареги, ичинде издөө керек, ал эми жаман маалыматтарды кайтарып бере алабыз. Анын үстүнө, кимдир бирөө Портленд, Орегон Остин көчөдө жашаган болсо, эмне болот?

Бул стол окшош керек эле:

SalesID Алгачкы акыркы Дарек 1 Дарек 2 Сити мамлекет Zip Phone
1 Sam Эллиот 118 Негизги Сент Остин TX 78720 2155555858
2 Элис Smith 504 2 Сент- Нью-йорк NY 10022 2111221821
3 Жо чиркөө коому 428 Aker Сент Apt 304 Остин TX 78716 2155455545

Бул жерде белгилей кетчү нерсе, бир жубайлар бар. Биринчиден, "дареги 1" жана "Address2" нускалуу талаалар ката астында түшүп көрүнөт.

Бирок, бул учурда алар өз столуна барып, маалыматтардын кайталануучу топ караганда сатуу адам эмес, түздөн-түз байланышы бар маалыматтардын өзүнчө даана айтып жатабыз.

Ошондой эле, качуу үчүн бонустук катачылык катары, тел номерине туюнтма столдун чыгып сыйрып жатат карап көрөлү. Сиз бардык мүмкүн болгон кендердин түзүлүшү сактоо алыс болушубуз керек. номерлерине учурда, бир нече жолу эл тел номерин жазып бар: 215-555-5858 же (215) 555-5858. Бул алардын тел санына сатык адам издеп же бир эле аймак кодун кыйла татаал сатуу адамдардын издөө болмок.

Базасы Mistake # 4: Туура башкы ачкыч колдонуу

Көпчүлүк учурларда, сиз алгачкы баскычта үчүн номерди Incrementing же башка өндүрүлгөн номерин же тамга колдонууга түрткү берет. бул жакшы аныктагычы болмок эле Сен ал угулат да, баштапкы баскычта үчүн ар кандай такталуу маалыматтар бербешибиз керек.

Мисалы, биз бир да кызматкер маалымат базасын түзүү үчүн коомдук коопсуздук номерин колдонуу жакшы идея сыяктуу сезилиши мүмкүн, өзүбүздүн жеке коомдук коопсуздук саны бар. Бирок сейрек болсо да, коомдук коопсуздук алмаштыруу үчүн номер үчүн мүмкүн, биздин негизги ачкыч өзгөртүүнү каалаган эмес.

Ал негизги баалуулук катары реалдуу маалыматтарды пайдалануу менен көйгөй болуп саналат. Бул өзгөртө аласыз.

Базасы Mistake # 5: Эркек бир Naming чогулушка колдонуу

Бул биринчи маалыматтар базасын иштеп баштоо бир чоң келишим сыяктуу сезилиши мүмкүн, бирок, сиз маалыматты алуу үчүн базасына каршы жазуу диапазону жетүү жолу, ат жыйын ээ кабар айтуу жаттап эле жардам берет.

Жөн гана иштеп аттары FirstName, басмада бир столдо бир дасторкон FIRST_NAME, LAST_NAME катары сакталган болсо болмок деп канча кыйын деп ойлошот.

эки таанымал ат жыйындар тармагындагы ар бир сөздүн биринчи тамгасын капиталдаштыруу же түшүндүрүп колдонуп сөздөрдү бөлүп жатышат. Ошондой эле биринчи сөзү эске албаганда, ар бир сөздүн биринчи тамгасын капиталдаштыруу кээ бир иштеп көрсүн: FirstName, LastName.

Ошондой эле жекелик стол аттарын же көптүк стол аттарын колдонуу жөнүндө чечим кабыл алууга түрткү берет. бул Order стол же ордендери стол болобу? бул Кардар стол же кардарлар стол барбы? Кайра эле, буйрук столу жана бир кардарлар үстөлгө менен чогуу болууну каалаган эмес.

чындыгында тандап, ат жыйынга кармануу жараян катары сиз тандаган ат жыйын маанилүү эмес.

Базасы Mistake # 6: туура эмес индекстөө

Индекстөө өзгөчө базасын долбоорлоо боюнча жаңы адамдар үчүн алууга укук кыйын иштердин бири болуп саналат. Бардык негизги баскычтары жана чет өлкөлүк ачкычтар менен кошо индекстелет керек. Бул индекс, сиз маалымат базасын ишке өтө начар көрүп туруп, бирге үстөлдөрүн шилтеме эмне болуп саналат.

Бирок өтө көп учурда эмне болуп өтүп кеткен башка кендери бар. Бул "КАЙДА" кендери бар. Сиз көп КАЙДА пунктунда талаа аркылуу издөөнү тарытуу турган болсо, ошол талаада индекске коюу жөнүндө ой келет. Бирок, силер да аткарууну зыян өтө үстөл индекси келбейт.

чечим кабыл алуу үчүн эмне керек? Бул базасынын негизги долбоорлоо көркөм бир бөлүгү болуп саналат. Эгер столдун устуно коюп керек канча индекстер боюнча эч кандай чектөөлөр жок. Негизинен, бул көрсөткүчкө көп бир КАЙДА пунктунда колдонулган ар кандай талаа келет. туура базасын индекстештирүү жөнүндө Подробнее.