2010-10-12 49 views
6

Có bao nhiêu trường trong bảng MySQL?Có bao nhiêu cột trong bảng MySQL

Tôi có một biểu mẫu để lấy thông tin từ người dùng, nó được chia thành 6 hoặc 7 đoàn kết, nhưng tất cả đều liên quan đến nhau. Chúng có khoảng 100 trường.

Bạn có đề xuất giữ tất cả chúng trong một bảng không?


Cảm ơn tất cả các bạn để được trả lời của bạn, cũng bảng dữ liệu của tôi được về một số thông tin cá nhân của người sử dụng, tất cả các công việc đó là cần thiết phải làm là để có được chúng từ người sử dụng, tiết kiệm và cho họ và có chỉnh sửa tùy chọn. tôi có nên sử dụng bình thường không? nó có làm tăng thời gian xử lý trong tình huống của tôi không?

Trả lời

4

MySQL hỗ trợ tối đa 4096 các cột trên mỗi bảng. Không sử dụng một trường trong bảng chính nếu nó thường mất rỗng giá trị.

  1. nếu một cột mất NULL không có vấn đề nhưng nếu một lưu trữ như "" lãng phí bộ nhớ của nó.

  2. Giá trị rỗng quá thường có nghĩa là dữ liệu trường tùy chọn thì tại sao một giá trị lưu trữ nó trong bảng chính.

Đó là những gì tôi muốn nói trong tuyên bố.

+0

Bạn có thể chứng minh tuyên bố của mình không? –

+0

'NULL' thậm chí không xa giống như' "" '. 'NULL === undefined' trong đó như' "" === chuỗi rỗng' (có thể là do 'DEFAULT' hoặc bởi vì người dùng thiết lập nó). Vì vậy, lý tưởng, 'DEFAULT" "' rất khó hiểu và không có ý nghĩa nhiều về mặt lý thuyết. Hơn nữa, thiết kế phù hợp với các thuộc tính của dữ liệu vượt xa những lợi ích của cân nhắc không gian. – Fr0zenFyr

0

Nếu tất cả chúng đều liên quan và không thể chuẩn hóa (không kể đến không có gì> 1 được tuần tự hóa) thì tôi đoán nó sẽ ổn.

Bạn có chắc chắn một số thứ không thể chia thành nhiều bảng không? Bạn có thể cung cấp mẫu thông tin bạn đang thu thập không?

Ông có thể chia mọi thứ vào như

  • user_details
  • user_car_details
  • ...
9

Cung cấp cho bạn đang theo dõi database normalization, bạn thường nên ok - mặc dù bạn có thể tìm thấy một số vấn đề về hiệu suất trên đường.

Với tôi, có vẻ như có thể có một số sự chuẩn hóa?

Ngoài ra, bạn nên xem xét có bao nhiêu của các cột này sẽ chỉ có giá trị null, và những gì quy ước đặt tên bạn đang sử dụng (không chỉ tên, name2 vv)

Trong trường hợp bạn muốn đọc vào nó nhiều hơn .:

Data normalization basics

MySql :: An introduction to database normalization

1

không có quy luật chung đó. Tuy nhiên, 100 cột chắc chắn gợi ý rằng thiết kế DB của bạn là đồng bằng sai. Bạn nên đọc về việc chuẩn hóa và thiết kế cơ sở dữ liệu trước khi tiếp tục.Tôi có một thiết kế DB với ~ 150 cột chia thành gần 40 bảng, chỉ để cung cấp cho bạn một ý tưởng.

+0

Các thuộc tính bạn đang tạo mô hình có thể liên quan đến một thực thể duy nhất, nhưng đó chỉ là một tình huống thiết kế DB điển hình. Hãy xem xét một chiếc xe và một động cơ. Mặc dù chỉ có một động cơ không có nghĩa là nó không nên được đưa vào bảng riêng của mình (mối quan hệ một-một). – Kawu

+1

Tôi đã đưa ra một phần hướng dẫn thực tế, độc lập về DBMS và thiết kế cơ sở dữ liệu cũng xử lý các kỳ quặc MySQL ở đây: http://www.kawoolutions.com/SQL_Database_Design – Kawu

0

Tôi thường bắt đầu tách chúng thành các bảng riêng biệt sau khoảng 20-30 cột. Tuy nhiên, nó thực sự được thúc đẩy bởi cách bạn sẽ sử dụng dữ liệu.

Nếu bạn luôn cần tất cả các cột, sau đó tách chúng ra thành các bảng riêng biệt sẽ thêm các biến chứng và chi phí không cần thiết. Tuy nhiên, nếu có các nhóm cột có xu hướng được truy cập cùng nhau, thì chia tách dọc theo những dòng có mối quan hệ 1-1 giữa các bảng có thể hữu ích.

Kỹ thuật này có thể hữu ích nếu hiệu suất là mối quan tâm, đặc biệt nếu bạn có các cột văn bản lớn trong bảng của mình.


Cuối cùng, tôi sẽ lặp lại các ý kiến ​​áp phích khác về bình thường hóa. Tương đối hiếm khi có 100 cột trong một bảng và có thể bạn cần bình thường hóa bảng.

Đối với các cột ví dụ, SETTING_1, SETTING_2, SETTING_3, SETTING_4 có thể tốt hơn trong bảng riêng biệt SETTINGS có mối quan hệ 1-nhiều với bảng gốc.

1

Đối với dữ liệu không cần lập chỉ mục hoặc tìm kiếm, tôi tạo một cột đơn trong cơ sở dữ liệu của tôi như col_meta chứa một chuỗi giá trị PHP được tuần tự hóa, nó tiết kiệm không gian và có thể mở rộng hoặc hợp đồng khi cần. Chỉ là một ý nghĩ.

0

Cảm ơn tất cả các bạn, vì vậy tôi nghĩ rằng nó tốt hơn cho tôi để hợp nhất một số dữ liệu của tôi vào một cột, trong đó tiết kiệm cho tôi nhiều không gian hơn và giảm chi phí

0

tôi đã nhận thấy một sự mất mát hiệu suất khoảng 65 Cột trong một DB với khoảng 10.000 Hàng. Nhưng có thể thiếu cấu trúc máy chủ hoặc cái gì khác.

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