Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Q6. [個人技能題組][Backend] 架設 DB server。 #7

Open
wildwindjen opened this issue Mar 15, 2017 · 7 comments
Open

Q6. [個人技能題組][Backend] 架設 DB server。 #7

wildwindjen opened this issue Mar 15, 2017 · 7 comments

Comments

@wildwindjen
Copy link
Contributor

wildwindjen commented Mar 15, 2017

寫程式只是電腦負責運算,資料總是要有地方可以儲存,所以有了所謂的資料庫(DataBase)。請在你的開發環境安裝一套 Relational DB server,如果不熟悉,也許 mariadb or postgresql 都是個選擇。

a. DB client 可以幹嘛用?你學會了哪些 DB client 指令?
b. 什麼是 Relational DB?還有其他種類 DB 嗎?差異在哪?
c. 為什麼存放資料要用 DB 不用 File?在資訊系統除了 DB, File 還有啥存放資料的選擇?

答題時間: 4hr

@dustfantasy
Copy link

dustfantasy commented Mar 30, 2017

「於 2017/03/30 開始答題」

「2017/03/30,對題目進行提問,預計 2017/03/31 答題完成」

a.
DB client 用來使用DB server的指令藉此讓DB server執行操作。
SQL的指令:
創建資料庫
create database [database name];
使用資料庫
use [database name];
創建table
create table [table name]([column name] [type],[column name] [type],...);
列出table欄位資訊
describe [table name];

b.
Relational DB關聯式資料庫,其內部儲存的資料是相關聯的,採用Schema欄位架構,一個table即是一個關聯,表中的欄位就是彼此有關係的屬性。
與之相反的非關聯式資料庫(NOSQL),不單單使用sql做查詢語言,另外沒使用table,也就是Schema欄位架構存放資料,具有較強水平擴張的特徵,因為對於設備要求較低,只要購買一般設備即可擴充容量,這是為了處理存放由大量使用者提供的資訊造成的巨量資料所發展的方式。

c.
DB由於數據結構化,依照邏輯結構儲存起來,查找快速、容易管理,且數據獨立性較高,不變動到資料庫存放資料的邏輯結構,應用程式就不用變更。
cookie,cache,local storge之類的可以存放資料,部份在儲存資料的大小上有所限制。

@wildwindjen
Copy link
Contributor Author

@dustfantasy
[這是要把所有sql指令列出來嗎?]

列出你這階段學到,覺得比較好用或常用的即可。想列幾個隨便你。

@dwatow
Copy link

dwatow commented Apr 3, 2017

「於 2017/04/03 開始答題」
a. DB client 可以幹嘛用?你學會了哪些 DB client 指令?
用來看目前table裡放的資料是不是如同自己想像的樣子。
SELECT <COLUMN_CONDITION> FROM <TABLE_NAME>
UPDATE <TABLE_NAME> SET <COLUMN>=<VALUE>
DELETE <TABLE_NAME>
WHERE <COLUMN_CONDITION>
ORDER BY ...
GROUP BY ...

b. 什麼是 Relational DB?還有其他種類 DB 嗎?差異在哪?
關聯式資料庫,必先建好table schema才可以填資料。
另一種NoSQL無需遵守「先建好table schema才可以填資料」。

c. 為什麼存放資料要用 DB 不用 File?在資訊系統除了 DB, File 還有啥存放資料的選擇?
File沒有保證安全、穩定、同步等特性。而且存取File必須從檔頭開始讀取,是循序存取,依檔案大小影響存取速度。
而DB有它的安全機制,發生問題可以取消交易,將資料恢復到上一次穩定正確的版本,存取速度並不會因資料庫中的資料大小而影響存取速度。
儲存在memory。
「於 2017/04/03 答題結束」

@YenChunchen
Copy link

YenChunchen commented Apr 5, 2017

「於 2017/04/05 開始答題」
a. DB client 可以幹嘛用?依照對應DB server執行對應指令,對DB server進行操作
你學會了哪些 DB client 指令?
1.CREATE DATABASE 資料庫名稱
2.USE 資料庫名稱
3.CREATE TABLE 資料表名稱 ( 欄位名稱 資料型態 是否允許NULL,.....);
4.INSERT INTO 資料表名稱 (欄位名稱...) VALUES (對應欄位值...);
5.SELECT 欄位名稱 FROM 資料表名稱;
b. 什麼是 Relational DB?關聯式資料庫,以Table的型式存放對應資料,每列皆為一筆資料,每欄為該table的屬性;除了行,列的關聯外,不同table可依照欄位關係建立關聯性;
還有其他種類 DB 嗎?另一種為NOSQL(not only SQL)
差異在哪?
關聯式資料庫: 不易擴展,資料結構需事先定義;因為結構化的關係,適合複雜的查詢
NOSQL: 易擴展,添加新資料表or欄位不需事先定義;較沒有License成本問題
c. 為什麼存放資料要用 DB 不用 File?
DB可以確保資料的獨立性,避免出現相同資料; 確保資料的ㄧ致性,某一欄位改變其他相關聯table也會改變;可同時間給多個使用者使用;可防止非權限人員對資料作讀寫
在資訊系統除了 DB, File 還有啥存放資料的選擇?
cookie,session,本機存放;有些存放資料方式有存放時間或記憶體限制,ex:session

@PenguinRun
Copy link

「於2017/04/05 開始答題」
a. DB client 可以幹嘛用?你學會了哪些 DB client 指令?
DB client可以針對資料庫的資料透過SQL指令來做關於CRUD的事情。
同時也能夠觀看我們所建立起來的資料庫其資料資料表內的資料。

學會的指令

-Terminal-
$ mysql -u -p
輸入密碼後,進入mysql。

-MySQL-
mysql> use
Database changed

mysql> show databases; //秀出所有table

  • SQL基本指令 -
    CREATE //新建table
    SELECT //查詢
    UPDATE //更新
    DELETE //刪除
    INSERT //建立

b. 什麼是 Relational DB?
關聯式資料庫就是每個table與table甚至到每個DB與DB間的資料都會有所關聯。

還有其他種類 DB 嗎?
NoSQL

差異在哪?
NoSQL不使用SQL做為DB client指令,且不像關聯式資料庫般需要事先定義好資料格式才能存放資料。

c. 為什麼存放資料要用 DB 不用 File?
如果用File會有兩個大缺點:

  1. 資料重複問題
    假設一間公司有員工薪資系統及員工請假系統。在這兩個系統中其實都會重複了一樣的員工資訊,這樣不僅浪費了檔案空間,還會造成不好維護的問題。若使用DB就僅需將員工資料放進去單一table就能解決,也好進行維護。
  2. 被隔離的資料
      假設一間公司需要寄送一個mail通知給顧客,告知顧客訂貨成功。則在該公司可能會有一個是訂貨系統另一個則是顧客資料系統,則必須先從顧客資料系統撈email資料後再去跟訂單系統做比對。此時,就必須要用到來自不同系統的不同檔案的資料。這中間處理的過程會十分繁瑣,若是有DB就只是table跟table之間取值的問題而已。

在資訊系統除了 DB, File 還有啥存放資料的選擇?
cache
看情況,如果指硬體是cache memory或若是網頁上的系統則網頁的cache也行。

「於2017/04/05 結束答題」

@HoHow
Copy link

HoHow commented Apr 20, 2017

「於2017/04/20 開始答題」

a. DB client 可以幹嘛用?你學會了哪些 DB client 指令?

可以下sql指令、對資料庫操作

select 選擇資料表裡的欄位
from 從哪個資料表取資料
where 欄位資料判斷
limit 限制查詢結果比數
join 將兩個表合成一個方便資料查詢

b. 什麼是 Relational DB?還有其他種類 DB 嗎?差異在哪?

1.建立在關聯模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料。
2非關係型資料庫(NoSQL)
NoSQL不使用SQL作為查詢語言。其資料存儲可以不需要固定的表格模式
c. 為什麼存放資料要用 DB 不用 File?在資訊系統除了 DB, File 還有啥存放資料的選擇?
1.DB方便後續處理資料,可以下sql指令,如果放在檔案裡後續處理不方便
2.cookie、session
「於2017/04/20 結束答題」

@alxtz
Copy link

alxtz commented Jun 1, 2017

「於 2017/05/31 開始答題」

我後來選了 postgresql,常聽到這個卻沒用過。

a.

  1. DB client提供了一個介面來讓你對DB server下指令,提供GUI來看DB裡的資料

  2. 指令:

    • CREATE
    • DROP
    • DELETE
    • SELECT
    • INSERT

b.

  1. Relational DB (關連式資料庫)就是實作關聯式模型的一種資料庫
    • 關聯式模型:以不同的table來把相關的資料囊括再一起
  2. 不使用關聯式模型的資料庫通常稱為NoSQL,代表不使用table而用其他方式來儲存資料
    會使用NoSQL的場合是當你的資料不適用於使用table這樣的表格來儲存的時候
  3. 差別 : NoSQL可以方便存進原本SQL資料庫比較難存的東西(JSON、影音、圖片)

c.

  1. 如果你只是要存username、password一組的話,大可以使用純文字檔
    但是當你有100組資料時,要在文件新增、刪除、改動就會是個問題。
    其他還有安全性、搜尋資料的優點。
  2. 不同用途的話,比起存在DB裡,小型文件可以存成Json、純文字、XML,只是要暫存的話可以使用記憶體。

「於 2017/06/01 結束答題」

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants