首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将设计稿转成高度可维护的代码? | ArchSummit

如何利用有限的人力吞吐更多的业务,是我们不断追求的永恒主题。...在过往,我们探索并实践过工程化、低代码化等方案,研发效能的提升已经到达了一个平台期,如何进一步提升研发效能,打通设计与研发的工作流程,实现规模化生产,仍是许多前端同学与设计同学一直关注的痛点问题。...”,在本次分享中,李伟涛老师将结合团队具体的业务场景,分享京东在设计稿转代码上的思路方案以及遇到的问题,带领大家全方位了解如何将设计稿转换成高度可维护的代码,从而减少前端工程师的工作量,提升开发效率,创造更多业务价值...目前很多设计稿转代码工具,依旧面临着许多技术难点问题,例如识别不全面、识别准确度不高、无法满足定制化需求等,设计要落地为代码,生成的代码结构往往也面临可维护性方面的挑战。...如何由设计稿生成静态代码,又如何让静态代码拥有灵魂,完美地还原设计稿,本次分享李伟涛老师将结合京东大促业务场景为大家带来最佳实践。

89130

设计数据库中常见的规范

文章目录 命名规范 合适的字段类型 主键设计要合理 合适的字段长度 优先考虑逻辑删除,而不是物理删除 每个表都需要添加一些通用字段 表的字段不要太多 尽可能使用not null 定义字段 评估哪块要加索引...避免使用MySQL保留字 不要外键关联,一般用代码维护 一般都选择INNODB存储引擎 选择合适的字符集 如果数据库字段是枚举,就在comment注释清楚 时间类型的选择 不建议使用存储过程,触发器...,建议字段类型修改为text,同时抽出单独一张表,用主键与之对应 同一表中,所有varchar字段的长度加起来,不能大于65535,如果又这样的需求,请使用text/longtext类型 主键设计要合理...恢复数据困难 物理删除会使自增的主键不再连续 核心业务表不建议做物理删除,只适合做状态变更 每个表都需要添加一些通用字段 id:主键,必须 creat_time:创建时间,必须 update_time:...time:表示时间值 datetime:表示日期时间值,跟时区无关 timestamp:表示时间戳值,跟时区有关 year:年份值 推荐使用datetime来保存日期和时间,存储范围更大,且和时区无关

1.6K91
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Hibernate学习笔记2

    4.Hibernate关联映射-数据对象三种关系介绍 Hibernate框架基于ORM设计思想,它将关系型数据库中的表与我们java中的类进行映射,一个对象就对应着表中的一条记录,而表中的字段对应着类中的属性...数据库中表与表之间存在着三种关系,也就是系统设计中的三种实体关系。 4.1. 一对一 原则有两种: 唯一外键对应:在任意一方添加外键来描述对应关系 主键对应:一方的主键作为另一方的主键 ?...双向关联维护 我们在开发中要配置双向关联配置。---------可以通过任意一方来操作对方 在操作代码,尽量来要进行单向关联。------可以尽量资源浪费。...我们可以使用inverse属性来设置,双向关联时由哪一方来维护表与表之间的关系。 ? Inverse它的值如果为true代表,由对方来维护外键。...Inverse它的值如果为false代表,由本方来维护外键。 关于inverse的取值: 外键在哪一个表中,我们就让哪一方来维护外键。 5.6. 对象导航 ? 5.7.

    1.4K40

    Mysql资料 主键

    主键(primary key) 一列(或一组列),其值能够唯一区分表中的每个行。 唯一标识表中每行的这个列(或这组列)称为主键。...没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只设计相关的行。 虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表有一个主键,以便于以后数据操纵和管理。...Innodb建议使用与业务无关的自增ID作为主键。...由于每次插入时也不需要移动已有数据,因此效率很高,也不会增加很多开销在维护索引上。...在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。 InnoDB 存储引擎采用了聚集(clustered)的方式,因此每张表的存储都是按主键的顺序进行存放。

    3.8K20

    21个MySQL表设计的经验准则

    如果存储的值太大,建议字段类型修改为text,同时抽出单独一张表,用主键与之对应。 同一表中,所有varchar字段的长度加起来,不能大于65535....为什么不推荐使用物理删除,因为恢复数据很困难 物理删除会使自增主键不再连续 核心业务表 的数据不建议做物理删除,只适合做状态变更。 6....不搞外键关联,一般都在代码维护 什么是外键呢? 外键,也叫FOREIGN KEY,它是用于将两个表连接在一起的键。...16.时间的类型选择 我们设计表的时候,一般都需要加通用时间的字段,如create_time、modified_time等等。那对于时间的类型,我们该如何选择呢?...我们就可以设计一个借书表,包含图书表的主键,以及读者的主键,以及借还标记等字段。 19. 大字段 设计表的时候,我们尤其需要关注一些大字段,即占用较多存储空间的字段。

    1.8K21

    MySQL 性能优化,优化设计及设计原则解读

    “abc 7个空格 ”,在精准查询(where)就必须带上后面的7个空格 varchar 不存的时候不占空间,存多长数据就占多少空间 优化设计第二步 如何合理的设计出符合三范式数据库表?...首先就有这样的规则:不要用业务规则来做主键,主键就应该和业务无关。 如经常用的的order_no(业务订单号),即使是唯一的,也不建议做主键的,容易产生传递依赖的问题,这样就不符合第三范式了。...优化设计第三步 数据库优化策略 1、选择小的数据类型 2、单独设计主键,并考虑分布式扩展 3、外键设计 (重要,我们之前开发都是直接使用的弱外键来设置主外键关系,而实际项目中,如果要是删除了主键对应的记录后...,外键表中的记录是没有删除的,这样对于数据库的数据是很容易混乱的,不便于维护,那我要是使用的是强外键的方式,这样直接删除主键记录,没有删除外键表中的记录,这样是要报错的,这样容易找到代码上的问题,外键的设计能对于数据完整性有一个好的约束...(四)列的顺序,可读性问题 (五)定义主键和外键 数据表必须定义主键和外键(如果有外键)。 (六)选择键 (七)是否允许NULL 任何值和NULL拼接后都为NULL。

    83931

    原 荐 MySQL-性能优化-优化设计和设计

    “abc  7个空格  ”,在精准查询(where)就必须带上后面的7个空格 varchar 不存的时候不占空间,存多长数据就占多少空间 优化设计第二步 如何合理的设计出符合三范式数据库表?...首先就有这样的规则:不要用业务规则来做主键,主键就应该和业务无关。 如经常用的的order_no(业务订单号),即使是唯一的,也不建议做主键的,容易产生传递依赖的问题,这样就不符合第三范式了。...优化设计第三步 数据库优化策略 1、选择小的数据类型 2、单独设计主键,并考虑分布式扩展 3、外键设计 (重要,我们之前开发都是直接使用的弱外键来设置主外键关系,而实际项目中,如果要是删除了主键对应的记录后...,外键表中的记录是没有删除的,这样对于数据库的数据是很容易混乱的,不便于维护,那我要是使用的是强外键的方式,这样直接删除主键记录,没有删除外键表中的记录,这样是要报错的,这样容易找到代码上的问题,外键的设计能对于数据完整性有一个好的约束...(四)列的顺序,可读性问题 (五)定义主键和外键 数据表必须定义主键和外键(如果有外键)。 (六)选择键 (七)是否允许NULL 任何值和NULL拼接后都为NULL。

    71640

    MySQL-性能优化-优化设计和设计原则

    MySQL性能优化目的 如何合理的设计数据库? 什么样的数据库设计才能给后期DBA优化提供基石? 数据库设计与程序设计的差异? ? 数据库设计早期优化 1....“abc 7个空格 ”,在精准查询(where)就必须带上后面的7个空格 varchar 不存的时候不占空间,存多长数据就占多少空间 优化设计第二步 如何合理的设计出符合三范式数据库表?...首先就有这样的规则:不要用业务规则来做主键,主键就应该和业务无关。 如经常用的的order_no(业务订单号),即使是唯一的,也不建议做主键的,容易产生传递依赖的问题,这样就不符合第三范式了。...优化设计第三步 数据库优化策略 1、选择小的数据类型 2、单独设计主键,并考虑分布式扩展 3、外键设计 (重要,我们之前开发都是直接使用的弱外键来设置主外键关系,而实际项目中,如果要是删除了主键对应的记录后...,外键表中的记录是没有删除的,这样对于数据库的数据是很容易混乱的,不便于维护,那我要是使用的是强外键的方式,这样直接删除主键记录,没有删除外键表中的记录,这样是要报错的,这样容易找到代码上的问题,外键的设计能对于数据完整性有一个好的约束

    73820

    MySQL数据库范式

    ) 让数据组织的更加和谐 范式设计的缺点: 范式越高,意味着表越多,多表联合查询的机率就越大,SQL的效率就变低 表越多时,在做更新、删除、插入数据时需要维护的表越多,同样会降低数据库的效率 因此:...(即原子特性)的字段 3、第二范式 第二范式:属性完全依赖于主键-主要针对联合主键 非主属性完全依赖于主关键字,如果不是完全依赖主键(即不全依赖联合主键中的所有关键字),应该拆分成新的实体,设计成一对多的实体关系...例如:选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),(学号,课程名称)是联合主键,但是学分字段只和课程名称有关,和学号无关,相当于只依赖联合主键的其中一个字段...年龄, 所在学院, 学院地点, 学院电话),学号是主键,但是学院电话只依赖于所在学院,并不依赖于主键学号,因此该设计不符合第三范式,应该把学院专门设计成一张表,学生表和学院表,两个是一对多的关系。...5、BC范式 BC范式:每个表中只有一个候选键 BC范式是在第三范式的基础上的一种特殊情况,即每个表中只有一个候选键(在一个数据库中每行的值都不相同,则可称为候选键) 示例:每一个员工的email都是唯一的

    45840

    C# .NET面试系列十:数据库概念知识

    这有助于维护与其他表的关联性。主键可以由单个列或多个列组成,这取决于表的设计。当一个表有多个列组成主键时,这被称为复合主键(Composite Primary Key)。...外键列的值必须是引用表中相应列的值之一,或者是 NULL(如果允许的话)。外键在数据库设计中是非常重要的,它有助于维护数据的一致性和关联性。...4、简化查询在查询中,对于 NOT NULL 的字段,不需要额外的判定条件来处理 NULL 值。这样可以简化查询语句,提高代码的可读性和可维护性。...在设计数据库应用时,也可以通过合理的事务设计和加锁策略来最小化死锁的可能性。39. 死锁如何解决?...需要注意的是,虽然触发器提供了一种方便的方法来处理特定的数据库事件,但过度使用触发器可能会使数据库变得复杂难以维护,因此在设计和使用触发器时需要谨慎。41. 在数据库中查询语句速度很慢,如何优化?

    1.1K10

    MySQL的主键详解

    主键(primary key) 一列 (或一组列),其值能够唯一区分表中的每个行。唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示一个特定的行。...没有主键,更新或删除表中特定行很困难,因为没有安全方法保证只涉及相关的行而不误伤其他行! 一个顾客表可以使用顾客编号列,而订单表可以使用订单ID,雇员表可以使用雇员ID或雇员社会保险号。...应该总是定义主键 虽然并非总需主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主键,以便以后的数据操纵和管理。...超键包含候选键和主键。 候选键 是最小超键,即没有冗余元素的超键。 外键 在一个表中存在的另一个表的主键称此表的外键 主键的选择 代理主键(推荐使用) 与业务无关的,无意义的数字序列。...不与业务耦合,因此更容易维护 通用的键策略能够减少要编写的源码数量,减少系统的总体拥有成本 自然主键 事物属性中的自然唯一标识

    5K20

    Java面试手册:数据库 ②

    如何对数据库进行管理: slq语言是一个专门处理数据库的编程语言。...主键不能有重复值,默认情况下每张表都有主键,一张表只能有一个主键,所谓一张表有多个主键指的是联合主键。联合主键的特点:用多个字段作为一张表的主键。...主键生成原则:代理主键,与业务无关的字段,仅仅是用来标识一行数据: goods: name ,price,date.额外添加一个字段 id 作为代理主键,但是它与业务无关,一般将该字段设置为int...//给表中添加外键 create table student ( id int primary key auto_increment,//主键设置每张表都有,并且在代码的第一行..., 一对多关系:班级和学生,一个班级可以对应多个学生,数据库通过设置主外键关联关系,来维护两张表的一对多的关系,主键和外键都是天加到字段上的属性。

    1.3K20

    MySQL 面试题

    唯一性:候选键:值必须在表中是唯一的,不能有重复。主键:值必须在表中是唯一的,并且表中只能有一个主键。约束候选键:是一种逻辑上的约束,不直接影响数据库的存储、查询性能,但确保了数据的完整性。...缺点:维护开销较高,会在插入、更新、删除操作时增加时间消耗。唯一索引:优点:确保数据完整性,避免重复数据。查询性能与普通索引相似。缺点:不适用于需要重复值的场景。...索引列的选择性:对于唯一索引,选择性非常高,因为每个值都是唯一的。索引维护开销:会增加插入、更新、删除操作的开销,因为数据库需要维护索引结构。...数量:一个表只能有一个主键索引,但可以有多个唯一索引和联合索引。列值:主键索引的列值不允许为空,而唯一索引允许有空值。...触发器是用户定义在关系表上的一类由事件驱动的特殊的存储过程。触发器是指一段代码,当触发某个事件时,自动执行这些代码。使用场景:可以通过数据库中的相关表实现级联更改。

    10310

    数据库设计原则

    引言 本文小结了数据设计原则; 数据库设计对于数据库的可维护性、可扩展性至关重要,某些原则必须严格遵守; 数据库设计范式 第一范式:属性具有原子性,不可再分解,即不能表中有表; 第二范式:唯一性约束,每条记录有唯一标示...,所有的非主键字段均需依赖于主键字段; 第三范式:冗余性约束,非主键字段间不能相互依赖; 数据库设计原则 完整性: not null声明禁止插入空值; check子句限制属性域; 去冗余: 避免冗余属性...,冗余属性会带来数据不一致性; 学生选课系统中,老师可以开课、学生可以选课,数据库设计中,课程可以由课程编号和课程名称等确定; 如果现在维护两个表,一个表A存储课程信息(课程编号、名称、简介、学分、院系等...; 解耦合: 一个表只存储它应该存储的信息,和此表无关的信息放到另一个表去存储,表之间尽量解耦; 上面的例子中,A中存储且只存储面向课程的信息,另外有表C,存储且只存储面向学生的信息(学号、姓名、性别、...至少保存3个月的系统访问日志; 数据库中的表可以有创建和更新时间戳,及所创建/修改行的用户标示; 不删除字段,而是打上一个被删除的标记; 版本化修改; 大型数据库设计 负载均衡; 读写分离; 分布式存储

    99460

    Mysql开发规范

    主键要选择较短的数据类型,Innodb引擎普通索引都会保存主键的值,较短的数据类型可以有效的减少索引的磁盘空间,提高索引的缓存效率3....无主键的表删除,在row模式的主从架构,会导致备库夯住【强制】禁止使用外键,外键功能请在应用层实现外键使得表之间相互耦合,影响update/delete等SQL性能,有可能造成死锁,高并发情况下容易成为数据库瓶颈...手机号不会用来做数学运算3. varchar可以模糊查询,例如 like '138%'索引设计【强制】单表索引的数量不得超过5个,否则增加维护负担、降低写入性能、占用更多空间【建议】建立的索引能覆盖80%...禁止3个大表的join,join字段类型需保持绝对一致,关联字段必须有索引【建议】线上业务修改或删除数据,务必根据主键来实现【建议】禁止使用 SELECT * ,必须明确指定列【建议】insert必须指定字段...pt-archiver【强制】线上业务不允许申请truncate、drop权限,如果需要删除表,请提交工单并由dba操作【建议】线上不允许建立业务相关数据库JOB,业务逻辑在代码层实现【建议】线上不允许使用长事务

    8210

    数据库知识学习,数据库设计优化攻略(九)

    3.2.3 索引 索引是一个表优化的重要指标,在表优化中占有极其重要的成分,所以将单独写一章”SQL 索引一步到位“去告诉大家如何建立和优化索引 3.2.4 主键和外键的必要性 主键与外键的设计,在全局数据库的设计中...SQL 3、使用数据库对象实现所有的 TSQL 有助于分析 TSQL 的性能问题,同时有助于你集中管理 TSQL 代码,更好的重构 TSQL 代码 3.2.6 传说中的‘三少原则’ ①:数据库的表越少越好...②:表的字段越少越好 ③:字段中的组合主键、组合索引越少越好 当然这里的少是相对的,是减少数据冗余的重要设计理念。...3.2.7 分割你的表,减小表尺寸 如果你发现某个表的记录太多,例如超过一千万条,则要对该表进行水平分割。水平分割的做法是,以该表主键的某个值为界线,将该表的记录水平分割为两个表。...如果你若发现某个表的字段太多,例如超过八十个,则垂直分割该表,将原来的一个表分解为两个表 3.2.8 字段设计原则 字段是数据库最基本的单位,其设计对性能的影响是很大的。

    59230

    为什么要用自增主键?

    我觉得设置自增主键的最主要目的是:应对变化。 笔者遇到的场景为:维护商业账号的资质相关信息。账号是由全局唯一且自增的分布式ID生成器生成的,很显然这个时候我们把账号作为主键这就天然合理。...笔者和同事讨论之后,做出如下方案: 先把原来业务代码中依赖主键查询的代码做升级; 把数据库原来的索引drop掉; 新建自增主键索引; 升级当前业务,实现同一账号,不同系统,享有不同资质; 但是第二步之后...如果我们一开始设计表的时候,就用业务无关的ID作为自增主键,那么本次升级就不会变得这么麻烦。...唯一键: 1.唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段, 指定列上都不允许有相同的值,允许空(NULL) 2.唯一约束可以用于保证在基表中增加一条记录时,一个或多个列值是唯一的...在切换这段时间,如果你的系统对latency非常敏感,那么就不能这么简单的做了,可能需要重新备份数据库,由于笔者维护这个表是B端系统,且数据量级大概百万量级,这么搞是OK的。

    4.3K40

    视图、表格设计

    所以视图又称为伪表、虚拟表,因为其实使用视图时和使用表差不多。 创建视图: 视图关键字是VIEW。 代码示例: ? ? 视图有三种引擎MERGE、TEMPTABLE、UNDEFINED: ?...代码示例: ? 修改视图: 修改视图使用修改关键字就可以了,跟修改表一样,只不过这张表里的数据是一条sql查询语句。 代码示例: ? 删除视图: 删除视图和删除表格一样用DROOP删除。...表格设计: 设计表格时在多方面考虑,并且表格设计下来后一般是不进行更改的,所以设计表格的时候就要思考,如何设计表格以后不会出改动表结构的情况,并且设计的表格需要有弹性,能够适应一些可能会出现的情况。...设计思想 1.如何去设计表 1.必须有主键 2.每一行要能区分开来 3.一个列里面不能含有多种值 4.多用字符串类型 5.在表格设计的时候不要使用大数据类型 6.不能有重复值出现,其中一张表不能重复其他表格里已经存在的数据...2.我们怎么把业务形成表 一对多 一个主键对多个外键 一对一 主键对主键 多对多 需要三张表来维护 例如 一个人可以学习多门课程 一门课程可以给多个学生学习 一个角色可以有很多功能 一个功能可以分配到很多个角色

    53920

    day30_Hibernate学习笔记_02

    ID值,将ID值加1作为新的主键,不建议使用,存在线程并发问题         // assigned  => 需要手动指定主键,不手动指定将会报错         session.getTransaction...表之间关系存在3种:一对多、多对多、一对一。(回顾) ? 一对多:1表(主表)必须主键和多表(从表)必须外键,主表主键与从表外键形成主外键关系。...多对多:提供中间表(从表),提供2个字段(外键)分别对应两个主表。 一对一:非常少见。 如何使用面向对象的思想通过代码描述对象与对象之间关系?...// 那么该如何解决呢?     // 答:因为现在是通过Order来维护外键的,所以应该先单独设置订单不属于任何Customer后,再删除Customer。     ...我们怎么使得外键有值呢?     // 答: 法一:我们可以手动维护关系。如下,此时运行代码,打印3条insert语句。

    1.1K20

    面试官:说说30亿量级的表结构,你是如何设计的

    背景介绍 今天方才就以财务系统的科目余额相关需求为例,给大家展示下在实际的企业级项目中,如何应用该方法论进行数据库表结构设计。...步骤2:拟定技术方案 前提说明:在这个量级的系统设计中,会先有业务架构设计-》应用架构设计&数据架构设计-》部署架构设计,此处讲述的技术方案属于应用架构设计中代码级别的设计。...,明确数据量会持续增加,且无上限,就建议使用BIGINT;若是字典维护表这种内部使用的,主键就可以用 INT。...TiDB数据库,如果表没有主键,TiDB 会自动生成一个隐式的 _tidb_rowid 列作为行 ID。这个列的值是单调递增的。...小结 我相信通过这个示例,大家对如何进行表结构设计,都有了自己的理解,也欢迎在评论区交流哟。 原创不易,如果对你有所帮助,记得帮方才点个赞、点个爱心,来个评论,这对方才很重要。

    9010
    领券