2010-02-26 49 views
6

Tôi có một danh sách các từ đồng nghĩa và cần phải tạo một cơ sở dữ liệu trong SQL cho nó.Cấu trúc cơ sở dữ liệu SQL

Tôi đã suy nghĩ về việc sử dụng một thiết kế cơ sở dữ liệu quan hệ, nhưng không biết nếu nó sẽ là tốt nhất. Sẽ có một lượng lưu lượng truy cập khá lớn bằng cách sử dụng cơ sở dữ liệu này.

Tôi đã suy nghĩ về Table1 sẽ như thế nào

Id 

Table2 
Id 
InterlinkID (Table1 Id) 
Word 

này có thể là cách tốt nhất? Có thể có từ 1 đến 20 từ được liên kết. Một vấn đề khác tôi thấy từ thiết lập này là nếu tôi có 1 từ hoạt động như một từ đồng nghĩa cho nhiều hơn một từ.

Không Ví dụ tuyệt vời như vậy của nó như thế nào sẽ được sử dụng, nhưng bạn sẽ có được ý tưởng:

 

    Table 1 
    Id 1 
    Id 2 

    Table 2 
    Id 1 
    InterlinkID 1 
    Word One 
    Id 2 
    InterlinkID 1 
    Word 1 
    Id 3 
    InterlinkID 1 
    Word First 
    Id 4 
    InterlinkID 2 
    Word Two 
    Id 5 
    InterlinkID 2 
    Word 2 
    Id 6 
    InterlinkID 2 
    Word Second 

Trả lời

6

Cách tối thiểu nhất của mô hình hóa các mối quan hệ sẽ là một bảng duy nhất với ba cột:

  • id - khóa chính, nguyên
  • word - một từ duy nhất, nên có một hạn chế duy nhất để ngăn chặn bản sao
  • parent_id - nullable

Sử dụng số parent_id để lưu số id của từ bạn muốn liên kết từ hiện tại. IE:

id | word | parent_id 
--------------------------- 
1 | abc | NULL 
2 | def | 1 

... cho thấy abc đã được bổ sung đầu tiên, và def là một từ đồng nghĩa với nó. phương tiện

Một rõ ràng hơn và linh hoạt của mô hình hóa các mối quan hệ sẽ có hai bảng:

  1. WORDS

    • id, tiểu học then chốt
    • wordvalue
  2. SYNONYMS

    • word_id
    • synonym_id

Cả hai cột trong bảng SYNONYMS sẽ là chìa khóa chính, để đảm bảo rằng không thể có bản sao. Tuy nhiên nó sẽ không dừng trùng lặp theo thứ tự ngược lại. Nhưng nó sẽ cho phép bạn lập bản đồ nhiều kết hợp để có mối quan hệ "mạng nhện" giữa các từ, trong khi định dạng bảng đơn sẽ chỉ hỗ trợ mối quan hệ phân cấp.

+0

+1, ngoài ra, bạn có thể xem xét ràng buộc kiểm tra (đối với thiết kế bảng hai) trên SYNONYMS: 'word_id

+0

@KM: Đúng, nhưng nó cũng sẽ phức tạp liên quan đến một từ có id cao hơn một cái đã tồn tại. Nói "is" và "as" là từ đồng nghĩa và "is" được đặt trước. Bạn không thể liên kết "as" to "is" sau khi bạn thêm "as" - ràng buộc kiểm tra sẽ chỉ cho phép bạn liên kết "is" thành "as". Bạn sẽ phải hiển thị giá trị pk cho cả hai từ để người dùng biết tại sao họ có thể làm điều đó theo cách này chứ không phải cách khác. –

+0

Sử dụng phương pháp # 2 của OMG Ponies, THANKS FOR INFO! – Brad

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