成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

軟件設計技巧之數據庫設計還能這樣玩

運維 數據庫運維
隨著軟件設計的發展,設計思想不斷革新,作為程序員,就需要不斷的學習,不斷的嘗試新方法,本文將介紹一種新的數據庫設計方法,個人感覺非常符合現代設計風格,接下來一起看看吧。

數據庫設計回顧

記得剛學習java開發的時候,老師推薦PowerDesigner設計數據庫,圖形化更加直觀易懂。

后來工作后,實際開發,喜歡直接連接數據庫操作,因此使用Navicat作為數據庫管理工具,順帶包攬設計工作。

而在團隊協作中,數據庫文檔是評審必須的,想想自己整理的word文檔,免不了會吐槽一番。最近幾年,word文檔寫的很少了(除非正式的文檔),因為markdown的出現,更加符合程序員的編寫習慣,感覺就和寫代碼一樣,縮進、特殊標記、代碼插入、表格等,很方便的就能實現。

為了講下面的內容,這里我簡單說明下markdown是什么。

markdown是一種標記語言,使用更加易懂的純文本格式,很方便實現寫文章所需的各種效果。

那么,你有沒有想過,數據庫設計也能通過類似的標記語言呢?

數據庫標記語言

今天要講的主角正式登場(^_^),她就是DBML,全稱是Database Markup Language(數據庫標記語言)。講之前,先來張靚照瞧瞧

軟件設計技巧之數據庫設計還能這樣玩

從上圖可以看到,table、pk、varchar等關鍵字,再熟悉不過了。這種語言是專門為數據庫設計的,所以叫數據庫標記語言,接下來我們就想起的細品下她的美好。

DBML語法

  • 表定義
  1. Table table_name { 
  2.     column_name column_type [column_settings] 

table_name:表名

column_name:字段名

column_type:字段類型

column_settings:字段的設置

  • 字段定義
  1. Table buildings { 
  2.     ... 
  3.     address varchar(255) [uniquenot null, note: 'to include unit number'
  4.     id integer [ pk, uniquedefault: 123, note: 'Number' ] 

主鍵:primary key 或 pk

空/非空:null 或 not null

注釋:note

唯一索引:unique

默認值:default

  • 索引定義
  1. Table bookings { 
  2.   id integer 
  3.   country varchar 
  4.   booking_date date 
  5.   created_at timestamp 
  6.  
  7.   indexes { 
  8.       (id, country) [pk] // composite primary key 
  9.       created_at [note: 'Date'
  10.       booking_date 
  11.       (country, booking_date) [unique
  12.       booking_date [type: hash] 
  13.       (`id*2`) 
  14.       (`id*3`,`getdate()`) 
  15.       (`id*3`,id) 
  16.   } 

主要分三種索引:

單字段索引、復合索引、表達式索引

  • 外鍵關系定義
  1. //Long form 
  2. Ref name_optional { 
  3.   table1.column1 < table2.column2 
  4.  
  5. //Short form: 
  6. Ref name_optional: table1.column1 < table2.column2 
  7.  
  8. // Inline form 
  9. Table posts { 
  10.     id integer 
  11.     user_id integer [ref: > users.id] 

 

  • 注釋
  1. // Inline form 

使用雙斜杠即可

  • 備注
  1. Table users { 
  2.   id int [pk] 
  3.   name varchar 
  4.  
  5.   Note: 'This is a note of this table' 
  6.   // or 
  7.   Note { 
  8.     'This is a note of this table' 
  9.   } 
  • 枚舉
  1. enum job_status { 
  2.     created [note: 'Waiting to be processed'
  3.     running 
  4.     done 
  5.     failure 

DBML工具

通過DBML可以讓表設計,通過純文本的方式,很方便的描述。那么,如果僅僅是這樣的,肯定不夠吸引,我猜你還希望

  • DBML轉成SQL語句
  • SQL語句轉換成DBML
  • 可視化

當然了,這些DBML都給你提供了,先來看張圖

軟件設計技巧之數據庫設計還能這樣玩

這個是所見即所得,在線工具。

至于DBML與SQL的互相轉化,DBML提供了基于node的命令工具dbml2sql、sql2dbml

總結

DBML是一個新型的數據庫設計工具,當然有人喜歡,有人吐槽,當然希望你能夠喜歡哈。軟件設計隨著時光的推進,很多新的理念被推出,作為程序員,當然是要不斷的吸收和轉化。

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2011-03-10 11:17:03

數據庫設計技巧

2020-11-16 13:38:31

PostMessage

2021-07-28 06:10:47

拖拽設計器 transmat

2021-09-05 07:55:37

前端Emoji 表情

2024-08-02 08:38:20

Controller接口地址

2021-04-01 05:40:53

分庫分表數據庫MySQL

2020-12-30 09:45:50

MySQL數據分離數據庫

2013-05-08 09:12:44

2011-07-21 14:33:02

設計模式

2021-01-30 07:51:59

微信微信8.0騰訊

2019-08-12 14:45:50

軟件設計Java

2017-08-28 15:00:20

軟件系統架構風格

2011-03-01 16:00:08

java數據庫

2019-10-29 16:02:14

開發者技能工具

2011-05-19 15:25:20

數據庫結構

2016-11-29 08:50:17

數據庫軟件架構

2024-12-03 09:45:34

2024-01-30 09:21:29

CSS文字效果文字裝飾

2018-12-12 11:30:54

JavaString字符串

2021-04-09 08:23:30

Css前端加載動畫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看午夜视频 | 久久毛片| 九九热在线观看视频 | 一区二区三区日韩 | 99久久婷婷国产综合精品电影 | 久久a久久 | 羞羞免费网站 | 国产在线a | 亚洲精品久久久久中文字幕二区 | 欧美日韩激情 | 91精品久久久久 | 亚洲欧洲视频 | 天堂综合 | 五月婷婷丁香婷婷 | 国产一区二区三区高清 | 欧美成人aaa级毛片在线视频 | 国产精品1区2区3区 一区中文字幕 | 久久av综合 | 欧美在线视频免费 | 亚洲精品视频一区二区三区 | 欧美综合网| 国产精品毛片无码 | 日韩一区在线播放 | 在线视频a | 国产精品一区在线观看 | 国产成人精品一区二区三区视频 | av国产在线观看 | 免费激情 | 日韩2020狼一二三 | 成人在线免费观看视频 | 亚洲毛片 | 精品综合久久 | 一级毛片黄片 | 国产精品久久久久一区二区三区 | 欧美在线免费 | av免费网址| 性福视频在线观看 | 久久亚洲精品视频 | 国产精品一区二区三区四区 | 性高湖久久久久久久久3小时 | 欧美一区视频 |