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

Khám phá mô hình dữ liệu (cách kết hợp một cơ sở dữ liệu hợp lý với nhau)

Đáng ngạc nhiên là hầu hết các câu trả lời dường như đã bỏ lỡ câu hỏi, nhưng tôi sẽ thử câu hỏi này;

Đây được gọi là mô hình hóa dữ liệu (cách bạn tập hợp nhiều bảng trong cơ sở dữ liệu với nhau để thể hiện những gì bạn muốn theo cách tốt nhất có thể) và đừng cảm thấy ngớ ngẩn khi hỏi; có những người dành tất cả thời gian thức của họ để chỉnh sửa và thiết kế các mô hình dữ liệu. Chúng cực kỳ quan trọng đối với sự thịnh vượng của bất kỳ hệ thống nào và thực tế là chúng quan trọng hơn nhiều mà hầu hết mọi người đều ghi nhận.

Có vẻ như bạn đang đi đúng đường. Luôn luôn là một mẹo hay để xác định các thực thể của bạn và tạo một bảng cho mỗi đối tượng, vì vậy, trong trường hợp này, bạn đã có người dùng và danh sách phát và bài hát (ví dụ). Xác định bảng của bạn do đó; NGƯỜI DÙNG, BÀI HÁT, DANH SÁCH PHÁT.

Điều tiếp theo là xác định tên của các trường và bảng (và có lẽ những cái tên đơn giản được đề xuất ở trên cũng rất đơn giản). Một số giới thiệu không gian tên giả (tức là MYAPP_USER thay vì chỉ USER), đặc biệt nếu họ biết mô hình dữ liệu sẽ mở rộng và mở rộng trong cùng một cơ sở dữ liệu trong tương lai (hoặc, một số vì họ biết điều này là không thể tránh khỏi), trong khi những người khác sẽ chỉ sử dụng bất cứ thứ gì họ cần.

Câu hỏi lớn sẽ luôn là về chuẩn hóa và nhiều vấn đề xung quanh vấn đề đó, cân bằng giữa hiệu suất và khả năng ứng dụng, và có rất nhiều cuốn sách viết về chủ đề này, vì vậy không có cách nào để tôi cung cấp cho bạn bất kỳ câu trả lời có ý nghĩa nào, nhưng ý chính của nó đối với tôi là;

Tại thời điểm nào một trường dữ liệu trong bảng sẽ xứng đáng với bảng của chính nó? Một ví dụ là bạn có thể tạo ứng dụng của mình chỉ với một bảng hoặc hai hoặc 6 tùy thuộc vào cách bạn muốn phân chia dữ liệu của mình. Đây là nơi tôi nghĩ rằng câu hỏi của bạn thực sự xuất hiện.

Tôi muốn nói rằng bạn hoàn toàn đúng trong các giả định của mình, điều cần ghi nhớ là các quy ước đặt tên nhất quán (và có rất nhiều ý kiến ​​về cách đặt tên cho các số nhận dạng). Đối với ứng dụng của bạn (với các bảng được đề cập ở trên), tôi sẽ làm như vậy;

USER { id, username, password, name, coffee_preference } 
SONG { id, artist, album, title, genre } 
PLAYLIST { id, userid } 
PLAYLIST_ITEM { id, songid, playlistid, songorder }

Bây giờ bạn có thể sử dụng SQL, bạn nhận được tất cả danh sách phát cho một người dùng;

   SELECT * FROM PLAYLIST WHERE userid=$userid

Hoặc tải tất cả các bài hát trong một danh sách phát;

   SELECT * FROM SONG,PLAYLIST_ITEM WHERE playlist_item.playlistid=$playlist.id AND song.id=playlist_item.songid ORDER BY playlist_item.songorder

Và như thế. Một lần nữa, các chủ đề đã được viết về chủ đề này. Đó là tất cả về suy nghĩ rõ ràng và ngữ nghĩa trong khi viết ra một giải pháp kỹ thuật cho nó. Và một số người chỉ coi đây là một nghề nghiệp (như DBA). Sẽ có rất nhiều ý kiến, đặc biệt là về những gì tôi đã viết ở đây. Chúc các bạn thành công.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để gọi các thủ tục lưu trữ MySQL từ Perl?

  2. JSP, MySQL và UTF-8

  3. Tối ưu hóa hiệu suất MySQL:thứ tự theo trường datetime

  4. Hiệu suất tìm kiếm qua 100 triệu bản ghi

  5. Vấn đề N trên mỗi Nhóm Sql trong mysql