2009-02-04 32 views
8

Liên quan đến thiết kế cơ sở dữ liệu, kích thước cột được đề nghị cho các trường như tên đầu tiên, giữa và họ là gì? Ngoài ra, ký tự chuẩn có phải là tên đệm an toàn hay không, hoặc có nên cho phép thêm khoảng trống cho chữ viết tắt giữa không?Kích thước cột cơ sở dữ liệu được đề xuất cho tên là gì?

Cụ thể, tôi đang tìm các kích thước cho phép đây là thứ mà tôi không phải lo lắng về việc sử dụng quốc tế. Tôi đã thấy một số chữ viết tắt ở giữa là hai ký tự, vì vậy tôi nghi ngờ rằng một nhân vật duy nhất là một ý tưởng hay, nhưng tôi tò mò muốn xem liệu có bất kỳ hướng dẫn nào ở đó chưa.

+0

Xem câu hỏi SO http://stackoverflow.com/questions/128099/what-is-the-longest-human-name-you-can-expect vì lý do tại sao nhiều giả định (độ dài của tên, họ hoặc tên, số lượng các phần riêng biệt trong tên và vv) có thể hoàn toàn sai đối với các quốc gia khác. – mghie

+0

@mghie - Đó là lý do tại sao tôi đang cố gắng xem hướng dẫn được đề xuất là gì. Tỷ lệ là rất khó để sử dụng một kích thước mà sẽ bắt tất cả mọi thứ, nhưng nếu chúng ta có thể bắt 99,9% của tên đầu tiên và cuối cùng và cung cấp đủ không gian cho nhiều chữ viết tắt giữa, chúng ta nên được tốt. – rjzii

+0

@Rob: Vâng, liên kết đến câu hỏi khác đã có lý do: Nó không đơn giản như vậy. Không phải ai cũng có tên và họ và có thể một số chữ viết tắt ở giữa. Kiểm tra các câu trả lời trong câu hỏi được liên kết, một số thỏa thuận cụ thể với nhu cầu của cột cơ sở dữ liệu cho tên. – mghie

Trả lời

8

ISO chưa ban hành các tiêu chuẩn để đặt tên cho con người (mặc dù), mặc dù tôi nghe một bản nháp sơ bộ đang được truyền đi ở mức rất cao nhất.

:)

Nghiêm túc, 64 hoặc phải đủ 99,99% họ và tên - bằng bất kỳ ngôn ngữ nào. Tôi đã không bao giờ nhìn thấy bất cứ điều gì khác hơn là một char cho một MI (mặc dù bạn đang phải, nhiều folks có nhiều hơn một).

BTW: Trừ khi tôi bị nhầm lẫn, địa chỉ email - về mặt kỹ thuật - có thể dài tối đa 320 ký tự và có thể chứa! # $% & '* + -/=?^_ `{| } ~ và. miễn là điều đó. không phải là ký tự đầu tiên cũng không phải là ký tự cuối cùng, cũng như không xuất hiện hai hoặc nhiều lần liên tiếp.

PS. Tên con thỏ cưng của tôi là "Hoàng đế của Ngài Theopolops Bunny Galore". Không cần phải nói điều này đã bị cắt ngắn trong cơ sở dữ liệu của bác sĩ thú y. Tôi nghĩ rằng họ có nó như là "Imperial Maj của ông". Vì vậy, nó đi.

1

Tôi không chắc chắn về độ dài nhưng nếu bạn định quốc tế hóa thì chắc chắn đi với nvarchar vì điều này sẽ hỗ trợ bất kỳ ký tự ASCII "mở rộng" nào mà bạn có thể gặp phải. Phần tốt khác về nvarchar là nó có độ dài tối đa cố định nhưng không có giá trị pad ngoài độ dài đó.

Nói cách khác tên của tôi sẽ được lưu trữ như

'Andrew' 

trong một lĩnh vực nvarchar(20) nhưng sẽ được lưu trữ như

'Andrew    ' 

trong một lĩnh vực char(20). Vì vậy, với điều này trong tâm trí tôi sẽ bắn cho một số lượng lớn cho tên với ý nghĩ được rằng bạn sẽ không lãng phí thêm không gian sử dụng nvarchar.

+0

Thao tác này sẽ tiết kiệm dung lượng, nhưng việc đọc/ghi vào bảng với các bản ghi kích thước cố định sẽ hiệu quả hơn. –

+1

@Dana - Tôi muốn rất chắc chắn rằng tôi cần hiệu quả trước khi tôi đưa vào sự phức tạp thêm của việc phải cắt các giá trị mà tôi lấy. Cảm giác cá nhân của tôi là bạn nên sử dụng các loại khác nhau cho các dữ liệu khác nhau và các loại cố định cho dữ liệu cố định. Y/N có thể là char (1), nhưng tên phải khác nhau. – tvanfosson

+1

Bạn đang so sánh táo và cam - phiên bản phi quốc tế của nvarchar (20) là varchar (20), mà sẽ không pad với không gian như cả nchar (20) và char (20) sẽ làm. –

2

Cá nhân tôi nghĩ rằng nó tóm tắt số lượng dữ liệu bạn mong đợi hợp lý để lưu trữ. Ngay cả khi bạn sẽ có một triệu tên, nó có thể sẽ không làm tổn thương để sử dụng một char (64) hoặc lớn hơn cho mỗi tên. Nếu kích thước là một vấn đề, bạn có thể bắt đầu với 32 và tăng kích thước với cột thay đổi, nếu cần.

5

Bạn cần 590 ký tự kết hợp nếu bạn muốn hỗ trợ world's longest name.

+1

Tôi hy vọng đây là một trong số rất ít câu trả lời về SO có thể liên kết với www.museumofhoxes.com dưới dạng liên kết hỗ trợ hợp lệ. :-) –

+2

Khi wikipedia không thành công, hãy chuyển sang lớp tiếp theo ... :) – Jeb

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