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

MySQL - Tổ chức nội dung cơ sở dữ liệu (Liên đoàn thể thao)

Ầm ĩ. Bạn đã đảm nhận một công việc lớn. Bạn có chắc chắn rằng không điều gì bạn sắp làm không thể thực hiện được bởi những thứ đã có sẵn? Nếu bạn chắc chắn, hãy đọc tiếp.

Thứ nhất, phần khó nhất của những gì bạn muốn làm là quản lý quyền truy cập của người dùng. Tôi khuyên bạn nên bắt đầu bằng cách viết mô-đun quản lý người dùng của mình trước khi tiếp tục.

Đối với những gì bạn muốn, có vẻ như Drupal hoặc một trong những hệ thống CMS cao cấp khác sẽ là một cách tuyệt vời để khởi động hệ thống. Drupal sẽ xử lý việc quản lý người dùng của bạn ngay lập tức (hoặc với các vấn đề tối thiểu) và bạn có thể viết phần còn lại của mã của mình dưới dạng các nút tĩnh. Điều này cũng giúp bạn dễ dàng thêm blog, diễn đàn, tin tức và quản lý danh sách gửi thư, v.v.

Như đã nêu trong các nhận xét ở trên, bạn cần giữ dữ liệu của mình lại với nhau. cũng sẽ tốt nếu giữ dữ liệu để so sánh lịch sử.

Nếu không mở rộng CMS, sau khi nhận lại từ bác sĩ tâm lý, bạn sẽ cần một thứ gì đó như sau:

  1. tệp tiêu đề để truy cập db và kiểm tra xác thực người dùng.

  2. tệp chân trang để hiển thị dữ liệu của bạn

  3. các tệp trang riêng lẻ để trình bày hoặc lấy dữ liệu của bạn.

Cấu trúc cơ sở dữ liệu để xử lý người dùng (tối thiểu) phải là IRO:

Person - details of individual users
username - link person to a username
email - email addresses
club - sports club details
password - passwords
logon - record of logon attempts
role - record of role of individuals in your site
permissions - list of required permissions to access areas of the site
role_permissions - default permissions for each role
person_role - link person to role
person_permissions - link person to permissions (only needed if some individuals need extra permissions not given routinely by their role)
club_person; person_email; - link people to clubs and to their email addresses.

Để xử lý các trận đấu, bạn sẽ cần:

team - team name, group and club reference
grouping - list of groups eg by age.  
divisions. - list of divisions
venue - list of venues.  Include GPS!!!
match - division, grouping, team1, team2, venue, date, time
result - team1 reported result, team 2 reported result, approved result (you may need to intervene!) match.

Như bạn có thể thấy, bạn cần một vài bảng hợp lý nhưng BẠN KHÔNG ĐƯỢC cố gắng thực hiện những điều thú vị với các nhóm thực tế cho đến khi bạn có quyền truy cập người dùng của mình hoạt động bình thường.

Những gì tôi đã phác thảo cho bạn là một db ở dạng bình thường. Không có dữ liệu văn bản nào bị trùng lặp và dữ liệu dễ dàng truy xuất, lập chỉ mục và hiển thị. Tôi thực sự cảm thấy câu hỏi này quá rộng đối với SO vì việc thiết kế cơ sở dữ liệu cho bạn hơi xa tầm với nhưng tôi nghĩ rằng định dạng chung là hữu ích.

Mỗi bảng chỉ nên chứa dữ liệu cần thiết duy nhất, ví dụ:

Person:  personid int, surname, forename, style, whenadded, whoadded, inuse
email:   emailid, email, whenadded, whoadded, inuse
email_person:  emailpersonid,emailid,personid, whenadded,whoadded,inuse

Điều này cho phép nhiều người chia sẻ một email và nhiều email được áp dụng cho một người mà không bị trùng lặp văn bản. ID phải được nhập INT AUTO_INCREMENT PRIMARY KEY thay vì SERIAL vì điều này tiết kiệm rất nhiều dung lượng lưu trữ và bạn sẽ không bao giờ điền INT trong ứng dụng này.

Các bảng khác sẽ được tạo theo cách tương tự. Các cột được bổ sung và các cột được bổ sung thêm là tùy chọn và khá tốn dung lượng lưu trữ nhưng có thể rất hữu ích. inuse là điều cần thiết, hãy đặt điều này thành BOOL và bạn có thể xóa các nhóm mà không cần xóa họ - dữ liệu không bị mất. Khi được điều động và bị di dời cũng hữu ích cho việc kiểm toán.

Một từ về mật khẩu - hãy đảm bảo rằng bạn lưu trữ những mật khẩu này dưới dạng MẶT NẠ MUỐI. Nếu bạn làm điều này, khi trang web của bạn bị tấn công, sẽ không ai có mật khẩu mà họ cũng sử dụng cho ngân hàng trực tuyến của họ bị lộ. Con người thường là những kẻ ngốc. Bạn phải chăm sóc chúng.

Như tôi đã nói, hơi nằm ngoài phạm vi nên tôi sẽ kết thúc câu trả lời ở đó - nó cung cấp cho bạn như yêu cầu phác thảo cơ bản của Mẫu Db Bình thường thứ 4 sẽ mạnh mẽ và có thể mở rộng nhưng khiến bạn phải làm việc. Tại sao không đặt thêm câu hỏi nếu vấn đề trở nên quá khó.

Chúc các bạn thành công.

ĐÃ THÊM:

Khuôn khổ DIY:

Nếu bạn không muốn học cách sử dụng một trong các khuôn khổ hoặc CMS hiện có, bạn sẽ cần phải viết riêng. Thật kỳ lạ, điều này thực sự rất dễ dàng.

header.php:

<?PHP
$mysqli=new mysqli(credentials....)//connect to database and present a mysqli or pdo object.
session_start(); //open a session
//you will need to authenticate your session here - see below
?>

footer.php:

<HTML>
<HEAD>
<TITLE>
<?PHP echo $pagetitle;?>
</TITLE>
</HEAD>
<BODY>
<?PHP echo $content;?>
</BODY>
</HTML>

Những thứ này được mypage.php sử dụng:

<?PHP
require("header.php");
//do some stuff that generates $content
$pagetitle="mypage.php";
require("footer.php:);
?>

Cần phải nhấn mạnh rằng đây là mức tối thiểu mà bạn sẽ cần và thực sự hấp dẫn - nó chỉ được trình bày để cho thấy điều này nên được bắt đầu như thế nào, không phải là một ví dụ về mã lý tưởng. Tuy nhiên, nó sẽ hoạt động.

Chìa khóa là tạo tiêu đề trình bày các biến bạn sẽ cần, chẳng hạn như kết nối db, tên người dùng, trạng thái đăng nhập người dùng, v.v. và chân trang mà bạn có thể nhập chi tiết để trình bày dữ liệu. Chân trang là nơi duy nhất bạn kết hợp HTML và PHP.

Sử dụng $ _SESSION của bạn để lưu trữ thông tin cần duy trì giữa các trang.

Các tệp này có thể đơn giản hoặc phức tạp tùy theo ý bạn - Tôi đã tạo cách đây không lâu để thực hiện một số kiểm tra người dùng và phiên và có thể hiển thị tập lệnh, tệp CSS tùy chỉnh, v.v. ở chân trang. Không khó để thực hiện nếu bạn bắt đầu đơn giản và xây dựng theo cách bạn cần. VẬY sẽ ở đây để giúp bạn.

Một lời cảnh báo:mặc dù bạn có thể bắt đầu rất đơn giản, nhưng những gì bạn đang cố gắng làm đều có chân và sẽ vượt khỏi tầm tay. Vui lòng kiểm tra mã của bạn sau khi bạn thiết lập và chạy mã để đảm bảo rằng bạn không vô tình bao gồm các lỗi bảo mật. Rất dễ dàng bao gồm chúng khi bạn tham gia vào một dự án và cần sửa chữa nhanh chóng và chúng có thể rất khó phát hiện sau này trừ khi bạn đang tìm kiếm chú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 để nhóm trường ngày để nhận kết quả hàng quý trong MySQL?

  2. Nhận giản đồ cơ sở dữ liệu với một truy vấn?

  3. Cách cài đặt và cấu hình mysql 5.6.16 trong Windows 7

  4. Cách phân tích cú pháp JSON trong trình kích hoạt MYSQL

  5. Chú thích JPA @Size cho BigDecimal