2009-08-21 25 views
8

Tôi thường bay bên cạnh quần của mình khi xây dựng cơ sở dữ liệu của mình. Tuy nhiên, dự án mới của tôi sẽ cần một chút kế hoạch. Tôi chưa bao giờ đi học để phát triển cơ sở dữ liệu nên tôi không được đào tạo chính quy về quy trình lập kế hoạch.Bất kỳ mẹo nào về việc lên kế hoạch cho một cơ sở dữ liệu lớn

Có phần mềm tốt, phương pháp nào để lên kế hoạch cho những điều này không?

+4

Mức độ lớn "lớn"? – cletus

+1

Lớn trên đĩa hoặc lược đồ lớn? – Sam

+0

Xin lỗi các bạn, sơ đồ lớn – simonwjackson

Trả lời

5

Đừng rơi vào cái bẫy cố gắng thiết kế mọi thứ ở phía trước. Nó chỉ đơn giản là không thể được thực hiện.Khi dự án tiến hành, bạn sẽ tìm thấy những cách tốt hơn để triển khai các tính năng mà bạn đã triển khai. Và khi bạn có được kinh nghiệm từ dự án, bạn cũng có được thông tin chi tiết về miền và cách thiết kế cơ sở dữ liệu tốt nhất.

Tôi khuyên bạn nên tham gia một cách tiếp cận nhanh nhẹn. Thiết kế một bit litte vào thời điểm đó. Và khi bạn thấy những thứ bạn đã tạo ra có thể đã được thiết kế theo cách tốt hơn, hãy cấu trúc lại nó. Điều này đi cả mã và lược đồ cơ sở dữ liệu.

Tuy nhiên, một từ lưu ý. Trường hợp nó dễ dàng để tái cấu trúc logic nghiệp vụ (trừ khi bạn đặt logic nghiệp vụ trong cơ sở dữ liệu - mà bạn không.) Sau khi rút ngắn ứng dụng, việc cấu trúc lại cơ sở dữ liệu sau khi khởi chạy là khó khăn hơn nhiều bởi vì bạn phải duy trì dữ liệu. Vì vậy, nếu bạn cần di chuyển một trường từ bảng này sang bảng khác, bạn cần thay đổi tập lệnh.

Vì vậy, khi bạn gần khởi chạy, bạn nên lên kế hoạch trước một chút. Nhưng trong giai đoạn phát triển ban đầu, tôi chắc chắn sẽ khuyên bạn nên sử dụng một cách tiếp cận nhanh nhẹn. Tạo một bảng tại một thời điểm. Một trường tại một thời điểm.

1

Suy nghĩ về các trường hợp sử dụng và mã ví dụ trước thời hạn đã giúp tôi rất nhiều trong thiết kế cơ sở dữ liệu; đó là một cách tốt để kiểm tra tính toàn vẹn của cơ sở dữ liệu mà không cần viết một câu lệnh SQL đơn.

Chúc may mắn!

+0

Có, hãy chắc chắn bạn viết một số truy vấn đối với nó. – Sam

0

Đây là một nơi mà mẫu kho lưu trữ có thể giúp ích rất nhiều, tôi sử dụng mẫu đó khi tôi có ý tưởng tốt về cách tôi muốn phần mềm hoạt động, nhưng khi tôi thiếu ý tưởng rõ ràng về dữ liệu liên quan. Nói chung nó dễ dàng hơn nhiều để tạo/tái cấu trúc các đối tượng giả hơn là sửa đổi các bảng và các thủ tục/truy vấn được lưu trữ sao lưu.

2

Bạn có thể tách bảng thành các đĩa khác nhau để tăng tốc độ truy cập (giả sử mySQL có thể thực hiện việc này). Bạn có thể nhận được các đĩa tốc độ cao.

Có thể bạn có ý nghĩa lớn như trong, nhiều bảng. Đó là một chủ đề khá lớn, nhưng bạn có thể bắt đầu với những:

  • Xác định một khóa chính trên bảng của bạn
  • Tạo mối quan hệ giữa các bảng bằng cách định nghĩa các phím nước ngoài
  • Tạo chỉ số trên thường được sử dụng ĐÂU lĩnh vực

Một số nhà phát triển bay bên cạnh quần của họ không làm những việc như vậy. Kudos để suy nghĩ trước.

Visio có thể làm biểu đồ quan hệ. Vì vậy, có thể giấy và bút chì.

Dưới đây là một số thông tin về các mô hình dữ liệu subject: http://en.wikipedia.org/wiki/Data_modeling

8

Stick với người đầu tiên vài normal forms khi thiết kế giản đồ của bạn nếu bạn không biết những gì bạn đang làm. Tỷ lệ là nó sẽ cho phép bạn thực hiện thay đổi dễ dàng hơn bất kỳ phương pháp khác khi bạn nhận ra những sai lầm thiết kế của bạn sau này.

Khi nghi ngờ, vui lòng hỏi ý kiến. Phương pháp dễ dàng nhất để trực quan hóa thiết kế cơ sở dữ liệu là sử dụng Sơ đồ quan hệ thực thể (ER Diagrams) và nó cũng cho phép chúng ta dễ dàng nhìn thấy thiết kế của bạn trông như thế nào mà không cần chọn lọc qua mã.

8

Vẽ mọi thứ ra trong E-R Diagrams có thể giúp quản lý sự phức tạp.

Chỉnh sửa: Hãy để tôi thêm rằng cũng có các quy tắc/nguyên tắc để giúp dịch Sơ đồ E-R thành giản đồ quan hệ và cũng có các công cụ hỗ trợ trong quá trình này.

1

Suy nghĩ về phiên bản lược đồ. Bạn sẽ xử lý các thay đổi đối với giản đồ của cơ sở dữ liệu theo thời gian như thế nào? Bạn có cần di chuyển hoặc nâng cấp dữ liệu không? Bạn có thể vứt bỏ dữ liệu trong quá trình phát triển không?

Có các phiên bản cơ sở dữ liệu riêng biệt để kiểm tra, dàn dựng và phát trực tiếp - từ đầu.

Vẽ nhiều ảnh.

0

Tôi bắt đầu với quy ước đặt tên. Tôi sử dụng * _NM (cho tên) và _NUM (đối với các số), V_ cho các chế độ xem, v.v.

Không có gì vỡ tan, nhưng nó giúp bạn dễ dàng đoán tên bảng và tên hàng của mình hơn phải tìm chúng. Không quan trọng những gì bạn chọn, chỉ cần đảm bảo rằng nó hợp lý và nhất quán. Hầu hết các DA chuyên nghiệp chỉ sử dụng chữ hoa cho tên bảng.

Cá nhân, tôi thích sử dụng ID cho ID trên mỗi bảng có ID (thường là PK), sau đó cho các mối quan hệ khóa ngoài là _ID để biểu diễn mối quan hệ. Ví dụ:

Trường học có PK ID.

Bảng STUDENT có PK ID và FK tham chiếu bảng SCHOOL, SCHOOL_ID.

Vì vậy, khi nhìn vào bảng học sinh mà không có bất kỳ ERD nào, thật dễ dàng để thấy rằng SCHOOL_ID tham khảo SCHOOL.ID và có vẻ tốt khi đọc câu lệnh SQL.

liên quan đến các công cụ mô hình dữ liệu Với, Erwin: http://www.ca.com/us/data-modeling.aspx

0

Vì vậy, trước khi tôi đưa ra bất kỳ lời khuyên về cách tốt nhất để thiết kế một sơ đồ lớn, tôi cần phải hỏi một câu hỏi: Liệu một schema lớn thực sự cần thiết?

Bạn đã hỏi có phương pháp phần mềm tốt nào để lập kế hoạch cho các hệ thống lớn hay không. Quả thực có, và một trong những cách tiếp cận tốt nhất để phát triển phần mềm phức tạp là SOA: Kiến trúc hướng dịch vụ. Nếu bạn muốn tự học một chút về các thực hành tốt nhất của SOA ngoài mức cơ sở dữ liệu, tôi khuyên bạn nên xem xét các cuốn sách của Thomas Erls, đặc biệt là SOA của mình: Nguyên tắc thiết kế dịch vụ. Tôi cũng khuyên bạn nên nghe một số bài giảng của Udi Dahan về thiết kế và kiến ​​trúc hướng dịch vụ và định hướng theo miền. Rất nhiều kiến ​​thức tốt có được từ cả hai người này.

Khi nói đến cơ sở dữ liệu, trước khi bạn đi sâu vào và phát triển một lược đồ rất lớn, phức tạp, hãy chắc chắn rằng bạn thực sự, thực sự thực sự cần nó. Trong một môi trường hướng dịch vụ, động lực là xác định ranh giới riêng biệt, không thể phá vỡ giữa các dịch vụ riêng biệt của các vấn đề kinh doanh mà bạn đang cố gắng giải quyết. Một khi bạn đã xác định các ranh giới này, bạn sẽ thấy rằng có các lược đồ nhỏ hơn có thể được tạo ra trong chúng. Đôi khi điều này dẫn đến sao chép dữ liệu, vì thông tin phải được xuất bản từ dịch vụ này sang dịch vụ khác khi cần phải vượt qua ranh giới. Nhưng lợi ích của việc có một vài lược đồ nhỏ hơn, ít phức tạp hơn có thể rất lớn. Bạn có được quyền tự chủ, tính di động, độ linh hoạt và khả năng bảo trì cao hơn bạn có với một lược đồ quái dị duy nhất.

Xem xét SOA, đặc biệt là cách xử lý cơ sở dữ liệu trong kiến ​​trúc hướng dịch vụ. Bài trình bày sau đây của Udi Đại hàn cũng nên cung cấp một số cái nhìn sâu sắc rất hữu ích:

http://www.vimeo.com/5022174

0

Tải về và xây dựng cơ sở dữ liệu của bạn sử dụng công cụ Workbench của MySQL. Sẽ giúp bạn xây dựng và duy trì cơ sở dữ liệu.

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