2011-08-01 31 views
5

Xét về hiệu suất và khả năng mở rộng, đó là phương pháp tốt hơn để thực hiện một trong nhiều ánh xạ trong MySQL.Có nên có một bảng riêng biệt khi ánh xạ từ một đến nhiều mối quan hệ không?

  • Sử dụng một cột riêng biệt nhưng gắn bó với 2 bảng:

    (người): id, tên

    (điện thoại): id, số lượng, chủng loại, Person_Id

  • Sử dụng một bảng riêng biệt:

    (người): id, tên

    (phon e): id, số lượng, loại

    (person_phone): id, Person_Id, phone_id

+1

Trong trường hợp nào bạn tưởng tượng thực hiện hai lần tham gia để truy cập dữ liệu bạn cần sẽ nhanh hơn so với thực hiện một lần tham gia? – R0MANARMY

+0

Tôi đã đề cập đến hiệu suất và sự ghê tởm. Tôi đã tự hỏi nếu có một bảng riêng biệt sẽ làm cho nó mở rộng hơn. – Shoaibi

+0

@Dan: Có thể ngắt giản đồ trên nhiều máy chủ cơ sở dữ liệu không? [Mức độ cảnh báo của caffeine đạt được từ lâu, vì vậy đây có thể không phải là đối số tốt nhất] – Shoaibi

Trả lời

11

Chỉ có một câu trả lời chính xác cho điều này, và đó là một trong những đầu tiên.

Ý tưởng thứ hai là cách bạn mô hình mối quan hệ nhiều với nhiều người, không phải là một-nhiều.

+1

điều thứ hai ngụ ý những người khác nhau có thể chia sẻ cùng một số điện thoại, đó là BS – Bohemian

+7

Đó là "BS"? Huh, vợ tôi và tôi đã chia sẻ cùng một chiếc điện thoại trong nhiều năm. –

+1

Nó chỉ là một ví dụ, các bạn. Câu hỏi thực sự của ông là "khi lập bản đồ một với nhiều mối quan hệ". Giữ bình tĩnh :) –

5

Về mặt hiệu suất, luôn luôn rẻ hơn để tránh tham gia, điều này làm tăng thêm tính đa dạng cho số lượng hàng được truy vấn.

Miễn là một điện thoại duy nhất sẽ chỉ được một nhân viên sử dụng (tùy chọn đúng một người) thì tùy chọn đầu tiên là tốt nhất.

+0

Tất nhiên, có sự cân bằng ở các khu vực khác với việc giảm thiểu sự tham gia. Nếu không thì tất cả mọi người sẽ chỉ sử dụng cơ sở dữ liệu một bảng (mà không phải là lố bịch như nó âm thanh ... họ đã từng có một số lượng lớn sau). Nhưng bạn chính xác rằng việc thêm 'JOIN' chỉ để thêm chúng sẽ không làm hiệu suất của bạn bất kỳ ưu đãi nào. –

5

Đầu tiên tốt hơn.

  1. Hiệu suất tốt hơn.
  2. Không gian lưu trữ ít hơn.
  3. Dễ hiểu.

P.S. Có thể bạn thậm chí không cần id cho điện thoại, (number, type, person_id) là đủ.

+0

Quá tệ tôi chỉ có thể upvote một lần, cần một upvote riêng cho P.S. :) – Shoaibi

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