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

Mối quan hệ một-một trong cơ sở dữ liệu là gì?

Mối quan hệ một-một trong mô hình dữ liệu là gì? Làm thế nào để bạn triển khai mối quan hệ này trong cơ sở dữ liệu? Các ví dụ trong bài viết này sẽ trả lời những câu hỏi này.

Có ba loại mối quan hệ giữa các thực thể (bảng) trong mô hình dữ liệu:

  • Mối quan hệ một-nhiều (còn được ký hiệu là 1:M).
  • Mối quan hệ nhiều-nhiều (M:N).
  • Mối quan hệ 1-1 (1:1).

Loại mối quan hệ phổ biến nhất là mối quan hệ một-nhiều, trong đó một bản ghi trong một thực thể có thể được tham chiếu bởi nhiều bản ghi trong một thực thể khác. Một kiểu phổ biến khác là mối quan hệ nhiều-nhiều. Loại quan hệ này chỉ được sử dụng trong các mô hình dữ liệu lôgic. Trong cơ sở dữ liệu vật lý, nó phải được triển khai bằng cách sử dụng các mối quan hệ một-nhiều và một bảng nối.

Trong bài viết này, chúng ta sẽ thảo luận về loại mối quan hệ thứ ba: mối quan hệ 1-1 . Đây là kiểu quan hệ ít phổ biến nhất trong mô hình dữ liệu. Chúng tôi sẽ đưa ra các ví dụ về mối quan hệ một-một, hiển thị ký hiệu cho các mối quan hệ một-một trong sơ đồ ER và thảo luận về các mối quan hệ một-một trong thực tế.

Ví dụ về mối quan hệ một-một

Đầu tiên, mối quan hệ một-một là gì? Đó là mối quan hệ trong đó một bản ghi trong một thực thể (bảng) được liên kết với chính xác một bản ghi trong một thực thể khác (bảng).

Hãy xem một số ví dụ thực tế về mối quan hệ 1-1:

  • Quốc gia - thành phố thủ đô :Mỗi quốc gia có đúng một thành phố thủ đô. Mỗi thành phố thủ đô là thủ đô của chính xác một quốc gia.
  • Người - dấu vân tay của họ . Mỗi người có một bộ dấu vân tay riêng biệt. Mỗi bộ dấu vân tay xác định chính xác một người.
  • Email - tài khoản người dùng . Đối với nhiều trang web, một địa chỉ email được liên kết với chính xác một tài khoản người dùng và mỗi tài khoản người dùng được xác định bằng địa chỉ email của nó.
  • Vợ / chồng - vợ / chồng :Trong hôn nhân một vợ một chồng, mỗi người có đúng một vợ hoặc chồng.
  • Hồ sơ người dùng - cài đặt người dùng . Một người dùng có một bộ cài đặt người dùng. Một nhóm cài đặt người dùng được liên kết với chính xác một người dùng.

Để rõ ràng hơn, hãy đối chiếu những ví dụ này với các mối quan hệ không phải là một đối một:

  • Quốc gia - thành phố: Mỗi thành phố thuộc đúng một quốc gia, nhưng hầu hết các quốc gia đều có nhiều thành phố.
  • Cha mẹ - con cái :Mỗi đứa trẻ có hai cha mẹ, nhưng mỗi cha mẹ có thể có nhiều con.
  • Nhân viên - người quản lý :Mỗi nhân viên có chính xác một người giám sát hoặc người quản lý trực tiếp, nhưng mỗi người quản lý thường giám sát nhiều nhân viên.

Biểu thị mối quan hệ một-một trong một sơ đồ ER

Mối quan hệ một-một trong biểu đồ ER được biểu thị, giống như tất cả các mối quan hệ, với một đường kết nối hai thực thể. Cardinality "một" được biểu thị bằng một đường thẳng duy nhất. (Số lượng "nhiều" được biểu thị bằng biểu tượng vết chân chim.)

Mối quan hệ 1-1 giữa quốc gia và thủ đô có thể được biểu thị như sau:

Các đường thẳng vuông góc có nghĩa là “ bắt buộc ”. Biểu đồ này cho thấy rằng một quốc gia bắt buộc phải có thủ đô và một quốc gia bắt buộc phải có thủ đô.

Một khả năng khác là một hoặc cả hai bên của mối quan hệ là tùy chọn . Một mặt tùy chọn được biểu thị bằng một vòng tròn mở. Sơ đồ này nói rằng có một mối quan hệ 1-1 giữa một người và dấu vân tay của họ. Một người là bắt buộc (dấu vân tay phải được chỉ định cho một người), nhưng dấu vân tay là tùy chọn (một người có thể không có dấu vân tay nào được chỉ định trong cơ sở dữ liệu).

Mối quan hệ một-một trong cơ sở dữ liệu vật lý

Có một số cách để triển khai mối quan hệ một-một trong cơ sở dữ liệu vật lý.

Khoá chính làm Khoá ngoại

Một cách để triển khai mối quan hệ một-một trong cơ sở dữ liệu là sử dụng cùng một khóa chính trong cả hai bảng. Các hàng có cùng giá trị trong khóa chính có liên quan với nhau. Trong ví dụ này, Pháp là một country với id 1 và thành phố thủ đô của nó nằm trong bảng capital dưới id 1.

country

id name
1 Pháp
2 Đức
3 Tây Ban Nha

capital

Về mặt kỹ thuật, một trong các khóa chính phải được đánh dấu là khóa ngoại, như trong mô hình dữ liệu này:

Khóa chính trong bảng capital cũng là một khóa ngoại tham chiếu đến cột id trong bảng quốc gia . Kể từ capital.id là khóa chính, mỗi giá trị trong cột là duy nhất, do đó, thủ đô có thể tham chiếu đến nhiều nhất một quốc gia. Nó cũng phải tham chiếu một quốc gia - đó là khóa chính, vì vậy không được để trống.

Khoá ngoại bổ sung với Ràng buộc duy nhất

Một cách khác mà bạn có thể triển khai mối quan hệ một-một trong cơ sở dữ liệu là thêm một cột mới và đặt nó làm khóa ngoại.

Trong ví dụ này, chúng tôi thêm cột country_id trong bảng capital . Viết hoa bằng id 1, Madrid, được liên kết với quốc gia 3, Tây Ban Nha.

country

id name
1 Pháp
2 Đức
3 Tây Ban Nha

capital

id name country_id
1 Madrid 3
2 Berlin 2
3 Paris 1

Về mặt kỹ thuật, cột country_id phải là một khóa ngoại tham chiếu đến id trong bảng country . Vì bạn muốn mỗi thủ đô được liên kết với chính xác một quốc gia, bạn nên tạo cột khóa ngoại country_id độc nhất.

Mối quan hệ một-một trong thực tế

Một vài mối quan hệ 1-1 cuối cùng

Mối quan hệ một-một là kiểu quan hệ ít thường xuyên nhất. Một trong những lý do cho điều này là rất ít mối quan hệ một-một tồn tại trong cuộc sống thực. Ngoài ra, hầu hết các mối quan hệ 1-1 chỉ là 1-1 trong một khoảng thời gian. Nếu mô hình của bạn bao gồm thành phần thời gian và ghi lại lịch sử thay đổi, như thường lệ, bạn sẽ có rất ít mối quan hệ 1-1.

Mối quan hệ một vợ một chồng có thể chia rẽ hoặc một trong hai người có thể chết. Nếu bạn mô hình hóa thực tế của các mối quan hệ một vợ một chồng (chẳng hạn như hôn nhân hoặc kết hợp dân sự) theo thời gian, bạn có thể cần phải mô hình hóa thực tế rằng chúng chỉ tồn tại trong một khoảng thời gian nhất định.

Bạn sẽ nghĩ rằng một người và dấu vân tay của họ không bao giờ thay đổi. Nhưng nếu người đó bị mất một ngón tay hoặc ngón tay bị cháy nặng thì sao? Dấu vân tay của họ có thể thay đổi. Đó không phải là một tình huống quá thường xuyên; tuy nhiên, trong một số mô hình, bạn có thể cần phải tính đến điều này.

Ngay cả những thứ dường như ổn định như các quốc gia và thủ đô của họ thay đổi theo thời gian. Ví dụ, Bonn từng là thủ đô của Tây Đức (Bundesrepublik Deutschland) sau Thế chiến II, khi Berlin là một phần của Đông Đức. Điều này đã thay đổi sau khi nước Đức thống nhất; thủ đô của Đức (Bundesrepublik Deutschland) hiện nay là Berlin. Việc bạn nên hay không nên tính đến điều này tùy thuộc vào thực tế kinh doanh của bạn và ứng dụng bạn đang làm việc.

Tình huống 1:1 khả thi:Các phần tùy chọn của bảng

Tôi có thể nghĩ ra một kịch bản khả thi cho mối quan hệ 1-1 thực sự:các phần tùy chọn của bảng. Hãy tưởng tượng bạn có bảng người dùng với dữ liệu người dùng. Bảng chứa thông tin người dùng chung, chẳng hạn như tên, địa chỉ email và ngày đăng ký của người dùng. Nó cũng chứa cài đặt người dùng, chẳng hạn như chủ đề màu sắc hoặc tự động đăng nhập cho ứng dụng đó. Tuy nhiên, hầu hết người dùng không có bất kỳ cài đặt người dùng nào; họ sử dụng cài đặt mặc định.

user

id name email signup_ date theme autologin
1 Nathanael Talbot [email protected] 2020-12-12 tối đúng
2 Talitha Yates [email protected] 2020-12-14
3 Markus Weir [email protected] 2020-12-15 ánh sáng sai
4 Nathalie Hays [email protected] 2020-12-18
5 Nhà thờ Maurice [email protected] 2020-12-20
6 Arwa Valdez [email protected] 2020-12-21

Có rất nhiều trường trống trong bảng này. Bạn có thể tách user bảng thành hai bảng:useruser_settings , chứa thông tin về cài đặt người dùng cho những người đã chọn chúng.

user

id name email signup_ date theme autologin
1 Nathanael Talbot [email protected] 2020-12-12 tối đúng
2 Talitha Yates [email protected] 2020-12-14
3 Markus Weir [email protected] 2020-12-15 ánh sáng sai
4 Nathalie Hays [email protected] 2020-12-18
5 Nhà thờ Maurice [email protected] 2020-12-20
6 Arwa Valdez [email protected] 2020-12-21

user_settings

user_id theme autologin
1 tối đúng
3 ánh sáng sai

Việc tách dữ liệu thành hai bảng làm cho việc truy vấn bảng trở nên phức tạp hơn:bạn phải nối dữ liệu từ cả hai bảng. Mặt khác, người dùng chính bảng quản lý đơn giản hơn.

Tìm hiểu thêm về Mối quan hệ Cơ sở dữ liệu

Mối quan hệ một-một là mối quan hệ trong đó một bản ghi trong một bảng được liên kết với chính xác một bản ghi trong một bảng khác. Mối quan hệ kiểu này rất hiếm trong đời thực. Nếu bạn đưa thời gian vào mô hình dữ liệu của mình, nhiều mối quan hệ một-một sẽ trở thành mối quan hệ một-nhiều hoặc nhiều-nhiều. Tình huống phổ biến nhất để sử dụng mối quan hệ một-một trong cơ sở dữ liệu là chia một bảng thành hai:một bảng có các cột bắt buộc, bảng còn lại có các cột tùy chọn.

Nếu bạn thích bài viết này, hãy xem các bài viết khác về mối quan hệ một-nhiều và nhiều-nhiều trên blog của chúng tôi.

Nếu bạn là sinh viên tham gia các lớp học về cơ sở dữ liệu, hãy đảm bảo tạo tài khoản Học thuật miễn phí trong Vertabelo, công cụ vẽ sơ đồ ER trực tuyến của chúng tôi. Vertabelo cho phép bạn vẽ sơ đồ ER vật lý và logic trực tiếp trong trình duyệt của mình. Nó hỗ trợ PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift và các cơ sở dữ liệu quan hệ khác. Hãy dùng thử và xem cách bắt đầu dễ dàng như thế nào!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiếm tiền với Nội dung không sử dụng:Mô hình Dữ liệu Nền kinh tế Chia sẻ

  2. Cách sử dụng mệnh đề GROUP BY trong SQL

  3. Sử dụng ODBC với Dịch vụ Đăng nhập Một lần của Salesforce và Active Directory (ADFS) (SSO)

  4. Chế độ xem SQL:Làm thế nào để làm việc với Chế độ xem trong SQL?

  5. Làm thế nào để tính toán trung bình động trong Redshift