PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

thiết kế cơ sở dữ liệu postgresql cho thương mại điện tử

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng PgBouncer Connection Pooler cho PostgreSQL với ClusterControl 1.8.2

  2. Phát hành thủ công Postgres LOCK

  3. Tạo SQL để cập nhật khóa chính

  4. Bảng truy vấn với tổng của TẤT CẢ các vị trí trước đó, không bao gồm vị trí hiện tại

  5. Docker Compose, Django:role _ không tồn tại