Day 9 - 拯救落後的专案能撑一天是一天(资料库与网站上线篇)

产生前端画面、规划有需要呼叫到後端的功能、修改後端接收数据後的处理逻辑、回传到前端接收结果後的画面呈现....,一条龙做下来的感觉就像是棒球场上的工具人。

/images/emoticon/emoticon04.gif

资料的终点站

当今天做一个会员系统、产品管理系统、代办清单系统等等的资料都需要有一个存取的地方,方便下一次的登入或者查看纪录因此资料库就是不二人选,而资料库常常会听到关联式和非关联式的类型。

两者间各自的特色

关联式资料库

ex : MSSQL、MySQL、Oracle、postgresql等等

  • 使用 SQL command执行CRUD的动作
  • 遵循 ACID 原则确保交易一致性 (Transcation)
  • 资料表需要事先规划有哪些资料表、有哪些栏位(主链、外来链、组合链)、资料表之前的关系(可以下ERD Model的关键字)
  • 关联式结构可透过 JOIN (left、right、inner、outer)合并资料表

非关联式资料库

ex : MongoDB、Cassandra

  • 使用该工具说明文件定义的API操作资料库
  • Document与Key-Value 架构并且资料是巢状的结构
  • 不需要预先定义格式,可以很弹性化的针对需求调整结构

使用心得

这两个资料库的类型都用亲自应用到专案,心得的话个人觉得要看专案的类型或者是开发的时程挑选符合开发效率的资料库类型,例如一个很雏形的专案没有很明确定义有哪些系统,但需要给上层或者是厂商看到开发的状况,这时候对我来说使用NoSql可以满足这一个情况(尤其搭配Node.js开发更有感)。

不过状况如果是已经有一个明确的需求并且有相关的规格文件(例如合作的单位有确定要使用关联式资料库存取),以及专案的开发时程有比较充裕那就会使用关联式资料库。(光是确认多个资料表之间的关联与栏位对於新鲜人的我还蛮花时间的QQ)

不过这个专案参考的程序码资料库处理是使用微软的Sqlserver,因此在不大改的情况下最後选择关联式资料库。

MSSQL怎麽安装?

下载的网址

怎麽下资料库指令?

回想起大学时期修的资料库课程都会觉得很厌烦,常常都到期末才会特别去准备一下考试的内容,直到在职场上开始实作都会抱怨一下自己当初如果多花一点时间,现在就可以少一点重新搞懂资料库的观念了xD

/images/emoticon/emoticon02.gif

进行资料库连线以及做一些指定时大部分的开发者都会使用SQL Server Management Studio操作和测试,或者也可以使用Azure Data Studio,安装完成後就可以新增资料库、资料表与栏位等相关的操作罗~

查询资料

如果要去查询商品资料表是否有符合条件名称时基本会使用到SELECT、FROM与WHERE

  1. Select 查询後有符合资料要显示的栏位名称(如果要显示全部可以使用乘的符号)
  2. From 指的是要去查询哪一个资料表
  3. where 则是查找的条件
SELECT table_column1, table_column2...
FROM table_name
WHERE column_name operator value;

新增资料

如果是要去新增资料的话可以使用INSERT INTO的方法执行,需要引用的参数包含要更新的资料表名称以及栏位(col)要新增的数值(value)。

INSERT INTO table_name (col1, col2, col3, col4, col5) VALUES (1, 2, 3, '4', '5')

更新资料

如果需要更新现有资料表内的资料时可以使用UPDATE的语法,同样也需要先选定要更新的资料表名称後接着SET栏位内要更新的数值,至於要更新哪一笔数值则是透过WHERE的条件。

UPDATE [资料表或可更新检视表物件名称] SET col1=值1, col2=值2, col3=值3, ... WHERE [指定条件]
UPDATE myTable SET Col1 = 3, Col2 = 5, Col4 = 5 WHERE Col0 = 198273

删除资料

如果需要删除资料的时候如同上述提到,。

DELETE FROM [资料表或可更新检视表名称] WHERE [给定条件]
DELETE * FROM [资料表或可更新检视表名称] WHERE [给定条件] -- 部份资料库需要加 "*" 才会生效,例如 Microsoft Access
DELETE FROM myTable WHERE col0 = 1918299

参考来源

温馨提醒

  1. 从昨天的後端篇提到的需要检视script是否正确时,便可以透过上述提到的工具下对应的指令检查输出的结果是否正确,这样子在後端除错时可以确认资料库处理的行为是正确的。
  2. 当开启SSMS时如果无法连线到资料库可以至SqlServer的组态管理员,并且确认下图红框处的服务是否有开启。
    Imgur

怎麽汇入excel档案

还有另外一个重要的处理就是将资料汇入到资料表内,由於当时提供要汇入资料表的资料档案类型是excel,因此找了一下汇入的方法操作起来还蛮方便的(需要留意汇入的栏位对应的资料表栏位名称设定)。

参考来源

网站上线

讲到这里大概已经是专案执行的第二个月同事也租了一个虚拟主机,而当时一直以为有人会负责这一部份结果还是要自己处理QQ,於是确认租地虚拟主机是window server後寻找可以上架网站的方法。

使用IIS上线

接着将当时处理的步骤大致的方向如下(使用IIS),更多的细节网路上下个关键字都有手把手教学的文章可以参考,使用的心得就是.NET比起其他框架上线的话比较没有较多的问题(.NET Core的话还要先执行部署的动作)。

  1. 安装IIS
  2. IIS新增站台
  3. 确认部属网站是否可以正常连线

参考来源1
参考来源2

温馨提醒

  1. IIS安装好之後网址先输入localhost确认是否有安装成功
  2. 如果需要https连线请确认port 443是否有开启
  3. 如果是在站台下新增虚拟目录,上线的网站内连线的路径建议改成相对路径(直接写死虚拟路径名称不易维护)
  4. 如果需要免费凭证可以下SSL for free的关键字参考网站

<<:  Day01 - 前言

>>:  .NET 新手 无痛入职 _ Day1 前言

[第十只羊] 迷雾森林舞会III 参见排版神器 Tailwind

天亮了 昨晚是平安夜 关於迷雾森林故事 第九夜 站在方舟甲板的洛神 数了一下玩家人数 就问 怎麽少了...

Rust-结构体(Struct)

struct 是命名并封装数个栏位数值所组合的自订型别 struct 有 3 种类型 元组结构体(t...

强人PM与敏捷相遇 -1

大概在2018年的时候,开始认识敏捷。会想要认识敏捷,其实也是服务的公司碰到了一定程度的发展瓶颈。 ...

TailwindCSS 从零开始 - 自订 addBase 套件

修改基底样式 addBase 专案会使用到很多的标题样式,在不同的页面都会出现,那我就可以订一个套...

不只懂 Vue 语法:以 Vue 和 Nuxt 为例,说明 SPA 和 SSR 的概念?

问题回答 Vue 是 SPA 框架,而 Nuxt 是 Vue 生态系里的一个能同时实现 SPA 和 ...