zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle数据库不再必须依赖主键(oracle不需要主键)

Oracle数据库依赖 需要 主键 必须 不再
2023-06-13 09:12:30 时间

Oracle数据库不再必须依赖主键

近日,Oracle公司宣布从19c版本开始,不再要求数据库表必须定义主键。这意味着开发人员在设计数据库时,可以根据不同的需求,选择是否定义主键,从而大大增强了数据库的灵活性和可扩展性。

以往,Oracle数据库要求每个表必须定义主键,这是因为主键是数据表中的唯一标识,它可以确保数据的完整性和准确性。一旦定义了主键,就会自动创建唯一索引,从而在查询和修改数据时提高效率。但是在某些情况下,主键反而会成为限制因素,例如在海量数据存储和高并发查询的场景下,主键的查询和更新操作会变得十分耗时,甚至会导致性能问题。

Oracle数据库主管管理Srini Chavali表示:“我们一直注意到用户在海量数据应用程序中使用主键时遇到的挑战。许多客户都要求我们放松对主键的限制。”

为了解决这些困难,Oracle数据库决定允许开发人员自行决定是否使用主键。这将允许用户更灵活地控制其数据模型,在不同的场景下选择不同的索引策略,从而提高性能和可扩展性。此外,Oracle数据库还为用户提供了一种新的自动索引功能,它会自动关注常用查询和更新模式,并自动创建和管理索引,从而消除了用户手动创建和维护索引的繁琐工作。

不过需要注意的是,虽然不再强制要求主键的定义,但Oracle仍然建议在数据表设计中使用主键。这是因为主键可以确保数据库的数据准确性和完整性,从而避免了潜在的数据损坏和混乱。

在实践中,具体如何选择是否定义主键,需要根据具体的应用场景进行判断。如果对数据完整性和唯一性有强烈需求,那么定义主键是比较明智的选择。但如果数据表中的数据并不需要唯一标识,那么放弃主键也没有问题。

Oracle数据库取消了对主键的强制要求,这为数据库设计和管理提供了更大的灵活性。但具体是否使用主键,需要根据实际情况判断。

以下为简单的创建表和插入数据的代码示例,不含主键:

CREATE TABLE employees (

employee_id NUMBER(6),

first_name VARCHAR2(20),

last_name VARCHAR2(25),

eml VARCHAR2(25),

phone_number VARCHAR2(20),

hire_date DATE,

job_id VARCHAR2(10),

salary NUMBER(8,2),

commission_pct NUMBER(2,2),

manager_id NUMBER(6),

department_id NUMBER(4)

);

INSERT INTO employees (employee_id, first_name, last_name, eml, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id)

VALUES (100, Steven , King , steven.king , 515.123.4567 , 17-JUN-87 , AD_PRES , 24000, NULL, NULL, 90);

INSERT INTO employees (employee_id, first_name, last_name, eml, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id)

VALUES (101, Neena , Kochhar , neena.kochhar , 515.123.4568 , 21-SEP-89 , AD_VP , 17000, NULL, 100, 90);

INSERT INTO employees (employee_id, first_name, last_name, eml, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id)

VALUES (102, Lex , De Haan , lex.de haan , 515.123.4569 , 13-JAN-93 , AD_VP , 17000, NULL, 100, 90);

SELECT * FROM employees;


我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题

本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Oracle数据库不再必须依赖主键(oracle不需要主键)