-
Идеята при проектирането на база данни е всеки елемент от данни да бъде отделен. И всеки елемент има свой собствен тип данни, ограничения и правила. Това
c0002
не е едно поле, а две. Същото сXXXnnn
или каквото и да е. Това е неправилно и сериозно ще ограничи възможността ви да използвате данните и да използвате функции и съоръжения на базата данни.Разбийте го на два отделни елемента от данни:
column_1 CHAR(1)
column_2 INTEGERСлед това задайте AUTOINCREMENT на
column_2
И да, вашият първичен ключ може да бъде
(column_1, column_2)
, така че не сте загубили каквото и да е значениеc0002
има за вас. -
Никога не поставяйте доставчици и клиенти (каквото и да означава "c" и "s") в една и съща таблица. Ако направите това, няма да имате таблица с база данни, ще имате плосък файл. И различни проблеми и ограничения, произтичащи от това.
Това означава, нормализирайте данните. В крайна сметка ще получите:
- една таблица за
Person
илиOrganisation
съдържащ общите данни (Name, Address
...) - една таблица за
Customer
съдържащи специфични за клиента данни (CreditLimit
...) - една таблица за
Supplier
съдържащи специфични за доставчика данни (PaymentTerms
...) - без двусмислени или незадължителни колони, следователно без нулеви стойности
- няма ограничения за използване или SQL функции
.
И когато трябва да добавите колони, вие го правите само там, където е необходимо, без да засягате всички други дела на плоския файл. Обхватът на ефекта е ограничен до обхвата на промяната.
- една таблица за