Trong trường hợp của Oracle, bạn sẽ muốn không tên cột 'id' hoặc 'tên' hoặc bất cứ điều gì chung.
Vấn đề là theo mặc định trong các phiên bản cũ hơn , Oracle sẽ cố gắng tham gia các bảng dựa trên các tên cột tương tự, vì vậy nếu tôi đã đặt tên tốt cho mọi thứ, thì cuối cùng tôi cũng đã chỉ định mệnh đề nối mặc định giữa các bảng của mình.
Nhưng ngay cả khi bạn không sử dụng Oracle, bằng cách không chọn các tên xuất hiện trong nhiều bảng, điều đó cũng có nghĩa là bạn không phải trải qua rắc rối về bí danh mỗi khi bạn phải chọn qua hai bảng:
SELECT
instrument.name as instrument_name,
instrument.abbr as instrument_abbr,
source.name as source_name,
source.abbr as source_abbr,
...
FROM ...
Vì vậy, nếu nhiều bảng chọn là chuẩn, các tên cột dài hơn sẽ giúp bạn nhập. (nếu bạn chỉ sử dụng một bảng mỗi lần ... bạn có thực sự cần một cơ sở dữ liệu quan hệ không?)
... và việc lưu kiểu gõ đưa chúng ta đến một vấn đề khác trong Oracle - ít nhất là trong 8i (phiên bản hiện tại khi tôi tham gia các khóa học Điều chỉnh và mô hình hóa dữ liệu của Oracle), bộ nhớ đệm của các kế hoạch thực hiện chỉ dựa trên rất nhiều ký tự đầu tiên của truy vấn (không thể nhớ giá trị chính xác ... 1024?), vì vậy nếu bạn có các truy vấn chỉ thay đổi theo một thứ gì đó ở cuối mệnh đề where và một danh sách dài các cột bạn đang trích xuất, bạn có thể chạy vào một hit hiệu năng vì nó không thể lưu trữ kế hoạch thực hiện chính xác.
Oracle đã có một hướng dẫn về việc chọn những gì họ tuyên bố là tên bảng và cột tốt, về cơ bản là hướng dẫn để xóa các chữ cái cho đến khoảng 5-8 ký tự, nhưng tôi không bao giờ quan tâm đến nó.
...
Khi mọi thứ khác đi:
- các cột luôn là số ít (các bảng luôn ở dạng số nhiều)
- tất cả các tên đều viết thường, chỉ trong trường hợp có trường hợp phân biệt chữ hoa chữ thường
- như một kết quả của những điều trên, sử dụng dấu gạch dưới thay vì vỏ lạc đà.
cập nhật : đối với những người không quen thuộc với hành vi tham gia của Oracle, hãy xem ví dụ cuối cùng về Làm chủ Oracle SQL: Tham gia điều kiện , trong đó đề cập đến:
Chuyện gì đã xảy ra? Lý do nằm ở chỗ, ngoài nhà cung cấp_id, hai bảng này còn có một cặp cột khác có tên chung. Cột đó là tên. Vì vậy, khi bạn yêu cầu một phép nối tự nhiên giữa nhà cung cấp và các bảng bộ phận, phép nối đó diễn ra không chỉ bằng cách đánh đồng cột nhà cung cấp của hai bảng, mà cả cột tên từ hai bảng cũng được đánh đồng. Vì, không có tên nhà cung cấp nào giống với tên một phần của cùng một nhà cung cấp đó, nên không có hàng nào được trả về bởi truy vấn.
Theo 'cú pháp tham gia cũ' (8i trở về trước), 'THAM GIA TỰ NHIÊN' là hành vi tham gia mặc định và tôi tin rằng vẫn là nếu bạn không chỉ định điều kiện tham gia. Khi 'THAM GIA TỰ NHIÊN' là một lựa chọn chính thức trong 9i, khuyến nghị chung là không sử dụng nó , bởi vì việc đặt tên cột xấu có thể làm bạn khó chịu, đó là điều tôi ủng hộ cho các tên cột tốt.