Chỉ cần nhìn vào giày, bạn có một thực thể:giày. Nó có hai thuộc tính trực tiếp:kích thước và màu sắc. Miền của mỗi thuộc tính này phải được xác định chặt chẽ, điều này chỉ ra các bảng tra cứu cho chúng. Có hai thuộc tính gián tiếp, giá cả và số lượng, nhưng đây là các thuộc tính của mỗi sự kết hợp giữa kích cỡ / màu sắc hơn là của chính một đôi giày.
Điều này gợi ý một bảng thực thể:Giày dép; hai bảng tra cứu:Kích thước và Màu sắc; và một bảng giao nhau ba chiều:ShoeStyles:
create table ShoeStyles(
ShoeID int not null,
SizeID smallint not null,
ColorID char( 1 ) not null,
Price currency,
Qty int not null default 0,
constraint FK_ShoeStyles_Shoe foreign key references Shoes( ID ),
constraint FK_ShoeStyles_Size foreign key references Sizes( ID ),
constraint FK_ShoeStyles_Color foreign key references Colors( ID ),
constraint PK_ShoeStyles primary key( ShoeID, SizeID, ColorID )
);
Do đó, ví dụ:kết hợp ('Penny Loafer', '10 1/2 ',' Tan ') sẽ có giá và số lượng cụ thể. Kích thước 11 Tấn sẽ có giá cả và số lượng riêng như Burgandy 10 1/2.
Tôi muốn giới thiệu một dạng xem kết hợp các bảng và trình bày kết quả ở dạng dễ sử dụng hơn như được hiển thị ở trên chứ không phải, giả sử, (15, 4, 3, 45,00, 175). Các trình kích hoạt trên chế độ xem có thể cho phép tất cả các quyền truy cập của ứng dụng thông qua chế độ xem, do đó, ứng dụng vẫn không xác định được bố cục vật lý của dữ liệu. Các chế độ xem như vậy là một công cụ cực kỳ mạnh mẽ, bổ sung đáng kể vào tính mạnh mẽ và khả năng bảo trì của dữ liệu cơ bản và của chính ứng dụng, nhưng lại được sử dụng quá mức.