2008-10-14 14 views
6

Tôi chưa từng tạo giỏ hàng hoặc diễn đàn bằng php. ngoài việc xem và phân tích dự án của người khác hoặc xem hướng dẫn hiển thị cách tạo dự án như vậy hoặc cách trở thành dự án như vậy. làm sao một người biết cách thiết kế cấu trúc cơ sở dữ liệu để tạo ra một thứ như vậy? im đoán khả năng của nó qua thử và sai ...làm cách nào để biết cách thiết kế cơ sở dữ liệu mysql khi tạo ứng dụng php nâng cao?

Trả lời

3

Kỹ thuật chính mà bạn có thể tìm hiểu về thiết kế cơ sở dữ liệu được gọi là Database Normalization.

Chuẩn hóa cơ sở dữ liệu có giới hạn, đặc biệt nếu bạn có nhiều giao dịch. Tại một số thời điểm bạn có thể bị buộc phải Denormalize.

Nhưng tốt hơn hết là bắt đầu với thiết kế cơ sở dữ liệu chuẩn hóa.

+0

cảm ơn bạn đã sửa lỗi chính tả. Tiếng anh của tôi thật khủng khiếp .. tôi biết: ( –

+0

ha, không vấn đề gì :) – Owen

17

bạn nên đọc và hiểu những điều cơ bản của normalization. đối với hầu hết các dự án, bình thường hóa thành biểu mẫu bình thường thứ 3 sẽ ổn. luôn có những tình huống nhất định khi bạn muốn nhiều hơn hoặc ít chuẩn hóa hơn, nhưng việc hiểu các khái niệm đằng sau nó sẽ cho phép bạn suy nghĩ về cách cơ sở dữ liệu của bạn được cấu trúc theo một định dạng chuẩn hóa.

đây là một ví dụ rất cơ bản về bình thường hóa một bảng:

students 
    student_id 
    student_name 
    student_class 
    student_grade 

một bảng khá chuẩn chứa dữ liệu khác nhau, nhưng chúng ta có thể thấy một số vấn đề ngay lập tức. chúng ta có thể thấy rằng tên của một học sinh phụ thuộc vào ID của mình, tuy nhiên, một học sinh có thể tham gia vào nhiều hơn một lớp, và mỗi lớp sẽ có một lớp khác nhau. sau đó chúng ta có thể suy nghĩ về các bảng như vậy:

students 
    student_id 
    student_name 

class 
    class_id 
    class_name 

đây không phải là xấu, bây giờ chúng ta có thể thấy chúng tôi có sinh viên khác nhau, và các lớp học khác nhau, nhưng chúng tôi đã không bị bắt lớp của học sinh.

grades 
    student_id 
    class_id 
    grade 

bây giờ chúng tôi có bảng thứ 3, cho phép chúng tôi hiểu mối quan hệ giữa một học sinh cụ thể, một lớp cụ thể và một lớp liên quan đến lớp đó. từ bảng ban đầu đầu tiên của chúng tôi, bây giờ chúng tôi có 3 bảng trong một cơ sở dữ liệu chuẩn hóa (giả sử chúng ta không cần phải bình thường hóa lớp nữa vì mục đích ví dụ :))

một vài điều chúng ta có thể thu thập từ ví dụ rất cơ bản này :

  • dữ liệu của chúng tôi được gắn với khóa của một số loại (student_id, class_id và student_id + class_id). đây là những số nhận dạng duy nhất trong mỗi bảng.
  • với các quan hệ có quan hệ của chúng tôi, chúng tôi có thể liên kết thông tin với nhau (số học sinh đã đăng ký là bao nhiêu?)
  • chúng tôi có thể thấy bảng của chúng tôi hiện không chứa dữ liệu trùng lặp , trong đó student_class có thể là giá trị tương tự cho nhiều sinh viên, nếu chúng tôi phải thay đổi tên lớp, chúng tôi sẽ cập nhật tất cả các bản ghi theo định dạng chuẩn hóa của chúng tôi, chúng tôi chỉ có thể cập nhật class_name của class_id)
+0

câu trả lời tuyệt vời dude – jake

1

Tôi cũng khuyên bạn nên sử dụng trình chỉnh sửa trực quan để tạo lược đồ cơ sở dữ liệu của bạn. Tôi đã sử dụng gần đây: http://dev.mysql.com/workbench/

Khi bạn tạo thiết kế cơ sở dữ liệu, hãy nhờ ai đó có nhiều kinh nghiệm xem qua và cung cấp phản hồi cho bạn.Nhưng biết rằng bạn có thể dành nhiều thời gian cho việc thiết kế, cuối cùng bạn sẽ phải thực hiện và sẽ tìm ra bạn đang thiếu một cái gì đó hoặc có thể làm một công việc tốt hơn để thực hiện nó theo một cách khác.

Vì vậy, thiết kế, nhận phản hồi, nhưng đừng ngại thay đổi.

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