2011-10-29 31 views
6

Tôi nên thiết lập cơ sở dữ liệu/bảng của mình như thế nào, nếu tôi không biết số lượng trường tôi sẽ điền cho mỗi bản ghi? Ví dụ: nếu tôi có biểu mẫu web cho phép người dùng nhập tất cả các xe mà anh ấy sở hữu và tôi không muốn giới hạn anh ấy với một số lượng nhất định, tôi sẽ lưu trữ điều này vào cuối cơ sở dữ liệu như thế nào?Thiết lập Bảng để lưu trữ số lượng trường biến cho mỗi bản ghi?

Các vấn đề trên kéo dài đến những tình huống tương tự như lưu trữ theo thứ tự (số biến các mặt hàng mỗi đơn hàng) của người dùng, vv

Trả lời

9

Trong Cơ sở dữ liệu quan hệ Hệ thống quản lý (RDBMS) thay vào đó bạn tạo các bản ghi con trong một bảng phụ thuộc có liên quan con thực thể (ô tô) với thực thể cha mẹ (người dùng). Có một khái niệm được gọi là cơ sở dữ liệu bình thường hóa và mục tiêu là mỗi bảng chứa dữ liệu cho một loại thực thể duy nhất.

Vì vậy, bạn có một bảng user với thông tin người dùng:

user_id | user_name | email    | ... 
    1234 | User1  | [email protected] | ... 
    2356 | User2  | [email protected] | ... 

Sau đó, một bảng để lưu trữ thông tin của mỗi chiếc xe của người sử dụng:

user_car_id | user_id | car_label | make  | model | ... 
      1 | 1234 | MyCar  | Ford  | 2011 | ... 
      2 | 2356 | A Car  | Chevrolet | 2010 | ... 
      3 | 1234 | MyOtherCar| BMW  | 2000 | ... 

Vì vậy, thay vì lưu trữ các thông tin của những chiếc xe trong bảng user, bạn có một bảng để lưu trữ xe hơi (user_car) thông tin liên quan đến từng người dùng theo cách của cột user_id. Đây là một ví dụ về mối quan hệ một-nhiều, trong đó một người dùng có thể có nhiều xe liên quan.

+0

Cảm ơn. Điều đó rất minh họa! – xbonez

+0

chỉ cần lưu ý - trong mô hình này, bạn không thể 'chia sẻ' một chiếc xe giữa nhiều người dùng (giống như họ bán nó cho nhau) ... – Randy

3

đây là một toàn bộ chủ đề: chuẩn hóa dữ liệu.

câu trả lời ngắn gọn là bạn tạo nhiều hơn một bảng.

trong ví dụ của bạn, bạn sẽ có bảng người, một bảng xe, và một phần ba là liên kết người này sang xe

+0

Ok, vì vậy giả sử tôi có một bảng dành riêng cho xe ô tô nơi mỗi xe và dữ liệu của xe đó cùng với một ID xe hơi duy nhất. Và tương tự cho người. Bảng liên kết hai cái gì trông giống như vậy. Nếu một người nào đó thêm nhiều xe ô tô, điều đó có tương đương với nhiều bản ghi trong bảng thứ ba này không? Ngoài ra, tôi sẽ xem xét chuẩn hóa DB. Cảm ơn – xbonez

+1

có chính xác. ví dụ bảng trung bình person_car sẽ có ít nhất hai trường: person_id và car_id sẽ tham chiếu đến các giá trị thích hợp khác. (bạn có thể muốn ngày ở đây quá ví dụ) – Randy

Các vấn đề liên quan