-
Ý tưởng trong thiết kế cơ sở dữ liệu là giữ cho từng phần tử dữ liệu riêng biệt. Và mỗi phần tử có kiểu dữ liệu, ràng buộc và quy tắc riêng.
c0002
đó không phải là một lĩnh vực, mà là hai. Tương tự vớiXXXnnn
hay bất cứ cái gì. Nó không chính xác và nó sẽ hạn chế nghiêm trọng khả năng sử dụng dữ liệu cũng như sử dụng các tính năng và tiện ích của cơ sở dữ liệu.Chia nó thành hai mục dữ liệu rời rạc:
column_1 CHAR(1)
column_2 INTEGERSau đó đặt AUTOINCREMENT trên
column_2
Và có, Khóa chính của bạn có thể là
(column_1, column_2)
, vì vậy bạn không mất đi bất kỳ ý nghĩa nàoc0002
dành cho bạn. -
Không bao giờ đặt nhà cung cấp và khách hàng (bất kể "c" và "s" có nghĩa là gì) trong cùng một bảng. Nếu bạn làm như vậy, bạn sẽ không có bảng cơ sở dữ liệu, bạn sẽ có một tệp phẳng. Và các vấn đề và hạn chế khác nhau dẫn đến điều đó.
Điều đó có nghĩa là, Chuẩn hóa dữ liệu. Bạn sẽ kết thúc với:
- một bảng cho
Person
hoặcOrganisation
chứa dữ liệu chung (Name, Address
...) - một bảng cho
Customer
chứa dữ liệu dành riêng cho khách hàng (CreditLimit
...) - một bảng cho
Supplier
chứa dữ liệu dành riêng cho nhà cung cấp (PaymentTerms
...) - không có cột tùy chọn hoặc không rõ ràng, do đó không có Nulls
- không có giới hạn về sử dụng hoặc các hàm SQL
.
Và khi bạn cần thêm cột, bạn chỉ thực hiện ở nơi cần thiết mà không ảnh hưởng đến tất cả các điều kiện khác của tệp phẳng. Phạm vi ảnh hưởng được giới hạn trong phạm vi thay đổi.
- một bảng cho