• 关于

    数据表之间的关系

    的搜索结果

问题

下面设计的数据库有可能实现吗?

现有多种业务需实现,各业务之间无关联(一个业务就是一个主体),但各个业务之间的数据表、数据字段及表之间的关联关系都不一样,比如业务A,它包含A、B、C三个表,B对A和B对C都是一对多关系;而业务B,它包含C、D、F、G、H五张表,C-F是多...
落地花开啦 2019-12-01 19:52:09 1055 浏览量 回答数 1

回答

mongodb是非关系型数据库,mysql是关系型数据库。 非关系型数据库的优势:性能是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。关系型数据库的优势:复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库,对方的优势就是自己的弱势,反之亦然。
小川游鱼 2019-12-02 01:41:20 0 浏览量 回答数 0

回答

数据结构的存储结构是和相应的数据在内存中的物理地址之间的关系有关。而逻辑结构只是描述数据之间的关系(三大逻辑结构的一种)。举例说,线性表(元素之间的逻辑关系是线性的)可以是顺序存储的方式
管理贝贝 2019-12-02 01:22:22 0 浏览量 回答数 0

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

问题

mongodb 在相同的数据结构中,集合是否需要水平拆分的必要?

在关系型数据库中,我们经常把表拆分成多个,表的结构相同,且表与表之间的跨表查询机会不多。这么做可以很大的提升性能。但我想问在mongo中,是否需要将 collection 也拆分成多个比如我有10000个用户,每个用户都有自己的产品。用户和...
蛮大人123 2019-12-01 19:58:44 1166 浏览量 回答数 1

问题

用redis存储mysql数据和关联的关系

最近在开发一个通过配置组合功能的项目,这些配置数据可以遇见会被频繁访问,所以想在mysql上面加一层redis把这些数量不是非常大的配置做缓存,并在增删改的时候把数据从mysql更新后再从redis中更新,但是表和表之间有关联关系。问:这些...
落地花开啦 2019-12-01 20:00:52 1870 浏览量 回答数 1

回答

Hibernate中的级联关系和数据库中表之间的外键关系完全是两回事。数据库中设置外键主要是为了实现外键约束。Hibernate中的级联关系主要是为了实现ORM的自动查询和存储相关表的数据。
小旋风柴进 2019-12-02 02:11:31 0 浏览量 回答数 0

问题

标签建模

概念说明 如上文所说,标签中心的作用是在现有的数据表之上构建跨计算存储的逻辑模型,直接让用户在视图层上对数据进行管理、加工、查询,屏蔽下层的多个大数据计算存储资源,简化数据的使用。...
反向一觉 2019-12-01 21:06:40 1639 浏览量 回答数 0

回答

关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。而非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。比如 有条2条数据,都在一张表里数据1:物品名称:桌子材质:木头数据2:物品名称:苹果是否成熟:是如果是MySQL建表,那就是建3列(数据名称,材质,是否成熟),只是有些行中有些列没值或者没用。比如,苹果就不需要材质列。在Mongodb中,没有列的概念,只有存储的键值。也就是每行以key-value的方式存储,在等同的Mysql的表概念中。存储的行数据每行列都不一样。第一行没有是否存储的key,第二行没有材质的key
落地花开啦 2019-12-02 01:53:59 0 浏览量 回答数 0

问题

如何用redis存储mysql数据和关联关系? 配置报错 

最近在开发一个通过配置组合功能的项目,这些配置数据可以遇见会被频繁访问,所以想在mysql上面加一层redis把这些数量不是非常大的配置做缓存,并在增删改的时候把数据从mysql更新后再从redis...
kun坤 2020-05-31 18:05:42 0 浏览量 回答数 1

回答

1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实体, 可以定义主键,也可以不定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。 主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计完成以后,有个美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这就是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。 因为:主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。 3. 基本表的性质 基本表与中间表、临时表不同,因为它具有如下四个特性: 原子性。基本表中的字段是不可再分解的。原始性。基本表中的记录是原始数据(基础数据)的记录。演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。理解基本表的性质后,在设计数据库时,就能将基本表与中间表、临时表区分开来。 4. 范式标准 基本表及其字段之间的关系, 应尽量满足第三范式。但是,满足第三范式的数据库设计,往往不是最好的设计。为了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的目的。〖例2〗:有一张存放商品的基本表,如表1所示。“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。在Rose 2002中,规定列有两种类型:数据列和计算列。“金额”这样的列被称为“计算列”,而“单价”和“数量”这样的列被称为“数据列”。640?wx_fmt=png 表1 商品表的表结构 5. 通俗地理解三个范式 通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解): 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。 没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。 6. 要善于识别与正确处理多对多的关系 若两个实体之间存在多对多的关系,则应消除这种关系。消除的办法是,在两者之间增加第三个实体。这样,原来一个多对多的关系,现在变为两个一对多的关系。要将原来两个实体的属性合理地分配到三个实体中去。 这里的第三个实体,实质上是一个较复杂的关系,它对应一张基本表。一般来讲,数据库设计工具不能识别多对多的关系,但能处理多对多的关系。 〖例3〗:在“图书馆信息系统”中,“图书”是一个实体,“读者”也是一个实体。这两个实体之间的关系,是一个典型的多对多关系:一本图书在不同时间可以被多个读者借阅,一个读者又可以借多本图书。为此,要在二者之间增加第三个实体,该实体取名为“借还书”,它的属性为:借还时间、借还标志(0表示借书,1表示还书),另外,它还应该有两个外键(“图书”的主键,“读者”的主键),使它能与“图书”和“读者”连接。 7. 主键PK的取值方法 PK是供程序员使用的表间连接工具,可以是一无物理意义的数字串, 由程序自动加1来实现。也可以是有物理意义的字段名或字段名的组合。不过前者比后者好。当PK是字段名的组合时,建议字段的个数不要太多,多了不但索引占用空间大,而且速度也慢。 8. 正确认识数据冗余 主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。非键字段的重复出现, 才是数据冗余!而且是一种低级冗余,即重复性的冗余。高级冗余不是字段的重复出现,而是字段的派生出现。〖例4〗:商品中的“单价、数量、金额”三个字段,“金额”就是由“单价”乘以“数量”派生出来的,它就是冗余,而且是一种高级冗余。冗余的目的是为了提高处理速度。 只有低级冗余才会增加数据的不一致性,因为同一数据,可能从不同时间、地点、角色上多次录入。因此,我们提倡高级冗余(派生性冗余),反对低级冗余(重复性冗余)。 9. E--R图没有标准答案 信息系统的E--R图没有标准答案,因为它的设计与画法不是惟一的,只要它覆盖了系统需求的业务范围和功能内容,就是可行的。反之要修改E--R图。尽管它没有惟一的标准答案,并不意味着可以随意设计。好的E—R图的标准是:结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。 10. 视图技术在数据库设计中很有用 与基本表、代码表、中间表不同,视图是一种虚表,它依赖数据源的实表而存在。视图是供程序员使用数据库的一个窗口,是基表数据综合的一种形式, 是数据处理的一种方法,是用户数据保密的一种手段。 为了进行复杂处理、提高运算速度和节省存储空间, 视图的定义深度一般不得超过三层。若三层视图仍不够用, 则应在视图上定义临时表, 在临时表上再定义视图。这样反复交迭定义, 视图的深度就不受限制了。 对于某些与国家政治、经济、技术、军事和安全利益有关的信息系统,视图的作用更加重要。这些系统的基本表完成物理设计之后,立即在基本表上建立第一层视图,这层视图的个数和结构,与基本表的个数和结构是完全相同。并且规定,所有的程序员,一律只准在视图上操作。 只有数据库管理员,带着多个人员共同掌握的“安全钥匙”,才能直接在基本表上操作。请读者想想:这是为什么? 11. 中间表、报表和临时表 中间表是存放统计数据的表,它是为数据仓库、输出报表或查询结果而设计的,有时它没有主键与外键(数据仓库除外)。临时表是程序员个人设计的,存放临时记录,为个人所用。基表和中间表由DBA维护,临时表由程序员自己用程序自动维护。 12. 完整性约束表现在三个方面 域的完整性:用Check来实现约束,在数据库设计工具中,对字段的取值范围进行定义时,有一个Check按钮,通过它定义字段的值城。 参照完整性:用PK、FK、表级触发器来实现。用户定义完整性:它是一些业务规则,用存储过程和触发器来实现。 13. 防止数据库设计打补丁的方法是“三少原则” 1、一个数据库中表的个数越少越好。只有表的个数少了,才能说明系统的E--R图少而精,去掉了重复的多余的实体,形成了对客观世界的高度抽象,进行了系统的数据集成,防止了打补丁式的设计; 2、一个表中组合主键的字段个数越少越好。因为主键的作用,一是建主键索引,二是做为子表的外键,所以组合主键的字段个数少了,不仅节省了运行时间,而且节省了索引存储空间; 3、一个表中的字段个数越少越好。只有字段的个数少了,才能说明在系统中不存在数据重复,且很少有数据冗余,更重要的是督促读者学会“列变行”,这样就防止了将子表中的字段拉入到主表中去,在主表中留下许多空余的字段。所谓“列变行”,就是将主表中的一部分内容拉出去,另外单独建一个子表。这个方法很简单,有的人就是不习惯、不采纳、不执行。 数据库设计的实用原则是:在数据冗余和处理速度之间找到合适的平衡点。“三少”是一个整体概念,综合观点,不能孤立某一个原则。该原则是相对的,不是绝对的。“三多”原则肯定是错误的。试想:若覆盖系统同样的功能,一百个实体(共一千个属性) 的E--R图,肯定比二百个实体(共二千个属性)的E--R图,要好得多。 提倡“三少”原则,是叫读者学会利用数据库设计技术进行系统的数据集成。数据集成的步骤是将文件系统集成为应用数据库,将应用数据库集成为主题数据库,将主题数据库集成为全局综合数据库。 集成的程度越高,数据共享性就越强,信息孤岛现象就越少,整个企业信息系统的全局E—R图中实体的个数、主键的个数、属性的个数就会越少。提倡“三少”原则的目的,是防止读者利用打补丁技术,不断地对数据库进行增删改,使企业数据库变成了随意设计数据库表的“垃圾堆”,或数据库表的“大杂院”,最后造成数据库中的基本表、代码表、中间表、临时表杂乱无章,不计其数,导致企事业单位的信息系统无法维护而瘫痪。 “三多”原则任何人都可以做到,该原则是“打补丁方法”设计数据库的歪理学说。“三少”原则是少而精的原则,它要求有较高的数据库设计技巧与艺术,不是任何人都能做到的,因为该原则是杜绝用“打补丁方法”设计数据库的理论依据。 14. 提高数据库运行效率的办法 在给定的系统硬件和系统软件条件下,提高数据库系统的运行效率的办法是:在数据库物理设计时,降低范式,增加冗余, 少用触发器, 多用存储过程。 当计算非常复杂、而且记录条数非常巨大时(例如一千万条),复杂计算要先在数据库外面,以文件系统方式用C++语言计算处理完成之后,最后才入库追加到表中去。这是电信计费系统设计的经验。 发现某个表的记录太多,例如超过一千万条,则要对该表进行水平分割。水平分割的做法是,以该表主键PK的某个值为界线,将该表的记录水平分割为两个表。若发现某个表的字段太多,例如超过八十个,则垂直分割该表,将原来的一个表分解为两个表。 对数据库管理系统DBMS进行系统优化,即优化各种系统参数,如缓冲区个数。在使用面向数据的SQL语言进行程序设计时,尽量采取优化算法。 总之,要提高数据库的运行效率,必须从数据库系统级优化、数据库设计级优化、程序实现级优化,这三个层次上同时下功夫。
茶什i 2019-12-27 15:54:46 0 浏览量 回答数 0

回答

在进行 Insert 更新数据操作时,源表与目标表的对应关系依赖于在 select 子句中列的顺序,而不是表与表之间列名的对应关系,创建表的列顺序,和插入的时候列顺序要保持一致。
云栖技术 2019-12-02 00:27:32 0 浏览量 回答数 0

问题

标签模型配置

实体配置 实体关系建模是把分散的多张表,以业务形态进行组织的一种方式,即围绕着一个或多个实体(即描述的对象)的各种属性和行为的描述。整个建模是围绕着“实体”-“关系”...
反向一觉 2019-12-01 21:06:52 1418 浏览量 回答数 0

问题

如何用redis存储mysql数据和关联关系?,数据库报错

" 最近在开发一个通过配置组合功能的项目,这些配置数据可以遇见会被频繁访问,所以想在mysql上面加一层redis把这些数量不是非常大的配置做缓存,并在增删改的时候把数据从mysql更新后...
python小菜菜 2020-06-01 16:17:45 0 浏览量 回答数 1

问题

如何用redis存储mysql数据和关联关系?,数据库报错

" 最近在开发一个通过配置组合功能的项目,这些配置数据可以遇见会被频繁访问,所以想在mysql上面加一层redis把这些数量不是非常大的配置做缓存,并在增删改的时候把数据从mysql更新后...
python小菜菜 2020-06-01 19:28:42 0 浏览量 回答数 1

回答

这个是关系型数据库中实体之间的关系1对11对多多对1多对多其中的多对多要进行拆分,拆成1对多和多对1关系的描述就是如何去设置这个主键和外键1对多的关系可以描述为一个表中有2个域作为一个联合主键多对多就是1对多和多对1的拆分往往做一个中间的表这个表的主键就是那个1 对应的表中的主键,将他们拿出来新做一张表hibernate中的ORM使用这个对象javabean描述的一张表就是一个javabean外键就是描述为子对象
云栖技术 2019-12-02 02:32:33 0 浏览量 回答数 0

回答

任何时候信息都是一对一的(每个用户都有一个用户名和密码),那么最好在一个表中使用它,因为它减少了数据库检索结果所需的联接数。我认为某些数据库对每个表的列数有限制,但是在正常情况下我不会担心它,如果需要,您可以随时将其拆分。 如果数据是一对多的(每个用户有成千上万的使用信息行),则应将其拆分为单独的表以减少重复的数据(重复的数据会浪费存储空间,缓存空间,并使数据库难以维护)。 您可能会发现有关数据库规范化的Wikipedia文章很有趣,因为它深入讨论了这样做的原因: 数据库规范化是组织关系数据库的字段和表以最小化冗余和依赖性的过程。规范化通常涉及将大表划分为较小(和较少冗余)的表,并定义它们之间的关系。目的是隔离数据,以便可以仅在一个表中进行字段的添加,删除和修改,然后通过定义的关系传播到数据库的其余部分。 还需要注意非规范化,因为在某些情况下重复数据会更好(因为它减少了数据库读取数据时需要做的工作量)。我强烈建议您尽可能使数据规范化,以开始使用,并且只有在您意识到特定查询中的性能问题时才进行规范化。来源:stack overflow
保持可爱mmm 2020-05-18 11:14:48 0 浏览量 回答数 0

回答

建立索引是为了更快地查询、检索。 建立主键和外键是为了保证数据有效性和完整性。 触发器是用于在对某表进行插入、删除、或更新后,根据增加、删除及改变的数据进行一些相关的操作。 只要打开帮助就可以查到有关的例子。帮助是取好的科书 这是微软件帮助文档中对索引的描述: 索引 与在任何关系数据库中一样,索引对数据仓库的性能具有重要作用。每个维度表都必须在主键上建立索引。在其它列(如标识层次结构级别的列)上,索引对某些专用查询的性能也很有用。 事实数据表必须在由维度表外键构成的组合主键上建立索引。 例: 给表AUTHORS的AU_ID列建立索引 CREATE INDEX au_id_ind ON authors (au_id) 主键: 定义主键 定义主键来强制不允许空值的指定列中输入值的唯一性。如果在数据库中为表定义了主键,则可将该表与其它表相关,从而减少冗余数据。表只能有一个主键。 外键: FOREIGN KEY 约束 外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。 当创建或更改表时可通过定义 FOREIGN KEY 约束来创建外键。 “答案来源于网络,供您参考”
牧明 2019-12-02 02:15:29 0 浏览量 回答数 0

问题

最好的优化数据库联表查询结果的方法

大家都知道传统的数据库比如mysql或者sqlite,mssql等,都有一个非常蛋疼的问题:因为只能使用简单2维数组的方式返回结果,所以结果集表里面充斥大量的重复数据,并且表与表之间的多对一或者一对多等关系也因为联表了不容易看出来。这冗余的...
蛮大人123 2019-12-01 19:52:04 915 浏览量 回答数 1

问题

SQL 与 NoSQL 的对比

NoSQL 是一个用于描述高扩展高性能的非关系数据库的术语。NoSQL 数据库提供的 schemafree 数据模型使应用无需预先定义表结构,更适应业务的多元化发展,且其对超大数据规模和高并发的支持让 NoSQL...
云栖大讲堂 2019-12-01 20:54:13 1382 浏览量 回答数 0

回答

一个好的数据库设计方案对于数据库的性能往往会起到事半功倍的效果。 需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面的内容。 将字段很多的表分解成多个表 对于字段较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。 因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。 增加中间表 对于需要经常联合查询的表,可以建立中间表以提高查询效率。 通过建立中间表,将需要通过联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询。 增加冗余字段 设计数据表时应尽量遵循范式理论的规约,尽可能的减少冗余字段,让数据库设计看起来精致、优雅。但是,合理的加入冗余字段可以提高查询速度。 表的规范化程度越高,表和表之间的关系越多,需要连接查询的情况也就越多,性能也就越差。 注意: 冗余字段的值在一个表中修改了,就要想办法在其他表中更新,否则就会导致数据不一致的问题。
剑曼红尘 2020-03-31 11:29:59 0 浏览量 回答数 0

问题

关注标签功能,其数据库是如何设计的?

前几天看到flask-SQLAlchemy怎么添加多对多数据这个问题,引起了我对于这样一个关注功能的好奇。在数据库中是专门建一张关系表来维护user和tag之间的关系?还是像我想的那样,在user表中给个tags字段,字段里面存放所有的ta...
落地花开啦 2019-12-01 20:03:24 1214 浏览量 回答数 1

回答

# ORM的实现基于一下三点 映射类:描述数据库表结构, 映射文件:指定数据库表和映射类之间的关系 数据库配置文件:指定与数据库连接时需要的连接信息(数据库、登录用户名、密码or连接字符串)
珍宝珠 2019-12-02 03:20:30 0 浏览量 回答数 0

回答

数据库有多种选型。已结构化数据库SQL为例,有以下表:QuestionidcontentUseridnameAnsweridquestion_iduser_idcontentQuestionGuideidquestion_fromquestion_tocondition实际是用Answer表存储用户回答,QuestionGuide表存储问题之间的血缘关系。
applex 2019-12-01 23:53:00 0 浏览量 回答数 0

问题

mysql数据表之间是多对多的关系时中间表主键比不加主键快?

比如商品表和属性表,因为是多对多的关系,所以有个商品属性中间表;CREATE TABLE IF NOT EXISTS dslxs_goods_attr (goods_id mediumint(8) unsigned NOT NULL COM...
蛮大人123 2019-12-01 19:50:39 1812 浏览量 回答数 1

回答

数据表级隔离;数据表之间独立,没有外键关系; 数据库级隔离;不同服务有不同的数据库; DBMS级隔离;不同服务有不同的数据库管理系统;
游客pklijor6gytpx 2019-12-02 03:13:55 0 浏览量 回答数 0

回答

# 相同点:它俩都用于连表查询,缓存查询结果,减少SQL查询次数。 # 不同点: select_related 主要针对一对一和一对多关系进行优化。通过多表join关联查询,一次性获得所有数据,缓存在内存中,但如果关联的表太多,会严重影响数据库性能。 prefetch_related 主要针对多对多关系进行优化。通过分表,先获取各个表的数据,缓存在内存中,然后通过Python处理他们之间的关联。
珍宝珠 2019-12-02 03:20:22 0 浏览量 回答数 0

问题

像segmentfault做的关注标签功能,其数据库是如何设计的 ?

前几天看到flask-SQLAlchemy怎么添加多对多数据这个问题,引起了我对于这样一个关注功能的好奇,每次进segmentfault的时候对于我关注的内容都会高亮显示。在数据库中是专门建一张关系表来维护user和tag之间的关系?还是像...
爵霸 2019-12-01 20:11:03 1196 浏览量 回答数 1

问题

python+django能够同时使用mongodb和mysql两种数据库的引擎吗?

我之前做的项目:因为表没有关联,所以用的是非关系型数据库mongodb,项目开发环境用的是python+django,部署在ubuntu上。当时用了pymongo做python和mongodb的连接,用mongoengine做了django...
落地花开啦 2019-12-01 19:46:46 3811 浏览量 回答数 3

问题

如何在SQL Server Management Studio中创建映射表?

我正在学习SQL中的表设计,并且想知道如何创建映射表以便在其他两个表之间建立多对多关系? 我认为映射表需要两个主键-但是我看不到如何创建它,因为它看起来只能有1个主键列? 我正在使...
心有灵_夕 2019-12-25 21:30:10 0 浏览量 回答数 1

回答

InnoDB和MyISAM之间的主要区别(“您询问的有关设计表或数据库的问题”)是对“参照完整性”和“事务”的支持。 如果您需要数据库来强制执行外键约束,或者您需要数据库来支持事务(即,由两个或多个DML操作进行的更改作为单个工作单元处理,则所有更改都已应用,或者所有更改都已还原)那么您将选择InnoDB引擎,因为MyISAM引擎缺少这些功能。 这是两个最大的区别。另一个大差异是并发性。使用MyISAM,DML语句将在表上获得排他锁,并且在保持该锁的同时,没有其他会话可以在表上执行SELECT或DML操作。 您询问的那两个特定引擎(InnoDB和MyISAM)具有不同的设计目标。MySQL还具有其他具有自己的设计目标的存储引擎。 因此,在InnoDB和MyISAM之间进行选择时,第一步是确定您是否需要InnoDB提供的功能。如果没有,那么MyISAM就可以考虑了。 缺少关于问题空间的更详细的讨论,对于差异的更详细的讨论是不切实际的……应用程序将如何使用数据库,多少个表,表的大小,事务负载,select的数量,插入,更新,并发要求,复制功能等。 数据库的逻辑设计应围绕数据分析和用户需求进行;使用关系数据库的选择将在以后出现,甚至更晚时将选择MySQL作为关系数据库管理系统,然后为每个表选择一个存储引擎。来源:stack overflow
保持可爱mmm 2020-05-11 17:32:26 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT