ããŒã¿ã®æŽåæ§ã«çŠç¹ãåœãŠãããŒã¿ããŒã¹ãã¹ãã®å æ¬çã¬ã€ããããŒã¿ã®æ£ç¢ºæ§ãšäžè²«æ§ã確ä¿ããããã®æŽåæ§å¶çŽããã¹ãææ³ããã¹ããã©ã¯ãã£ã¹ã解説ã
ããŒã¿ããŒã¹ãã¹ãïŒä¿¡é Œæ§ã®é«ãã·ã¹ãã ã®ããã®ããŒã¿æŽåæ§ã®ç¢ºä¿
仿¥ã®ããŒã¿é§ååã®äžçã§ã¯ãããŒã¿ããŒã¹ã¯ç¡æ°ã®ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ã®ããã¯ããŒã³ã§ããéèååŒããå»çèšé²ãEã³ããŒã¹ãã©ãããã©ãŒã ãããœãŒã·ã£ã«ã¡ãã£ã¢ãããã¯ãŒã¯ã«è³ããŸã§ãæ£ç¢ºã§äžè²«æ§ã®ããããŒã¿ã¯ãäºæ¥éå¶ãæææ±ºå®ãèŠå¶éµå®ã«ãšã£ãŠæ¥µããŠéèŠã§ãããããã£ãŠã峿 ŒãªããŒã¿ããŒã¹ãã¹ãã¯ãããŒã¿ã®æŽåæ§ãä¿¡é Œæ§ãããã©ãŒãã³ã¹ã確ä¿ããããã«äžå¯æ¬ ã§ãã
ããŒã¿æŽåæ§ãšã¯ïŒ
ããŒã¿æŽåæ§ãšã¯ãããŒã¿ããŒã¹ã«ä¿åãããŠããããŒã¿ã®æ£ç¢ºæ§ãäžè²«æ§ãããã³æå¹æ§ãæããŸããããŒã¿ãä¿åãåŠçãååŸã®éçšã§å€æŽããããäºåã«å®çŸ©ãããã«ãŒã«ãå¶çŽã«åŸãããšãä¿èšŒããŸããããŒã¿æŽåæ§ãç¶æããããšã¯ãä¿¡é Œã§ããã·ã¹ãã ãæ§ç¯ããããã«äžå¯æ¬ ã§ããããããªããã°ãçµç¹ã¯äžæ£ç¢ºãªæ å ±ã«åºã¥ãã誀ã£ãæææ±ºå®ãèŠå¶äžã®çœ°åã顧客ã®ä¿¡é Œåªå€±ãšãã£ããªã¹ã¯ã«çŽé¢ããŸããããŒã¿æŽåæ§ãã§ãã¯ã®æ¬ åŠã«ããéè¡ãäžæ£ååŒãåŠçããããäžæ£ç¢ºãªæ£è èšé²ã®ããã«ç é¢ã誀ã£ãè¬ãæäžãããããå Žé¢ãæ³åããŠã¿ãŠãã ããããã®çµæã¯æ·±å»ãªãã®ã«ãªãåŸãŸãã
ãªãããŒã¿æŽåæ§ãã¹ãã¯éèŠãªã®ãïŒ
ããŒã¿æŽåæ§ã«çŠç¹ãåœãŠãããŒã¿ããŒã¹ãã¹ãã¯ãããã€ãã®çç±ããäžå¯æ¬ ã§ãïŒ
- æ£ç¢ºæ§ïŒããŒã¿ããŒã¹ã«å ¥åãããããŒã¿ãæ£ããããšã©ãŒããªãããšãä¿èšŒããŸããäŸãã°ã顧客ã®äœæãéµäŸ¿çªå·ãšäžèŽããŠããããååã®äŸ¡æ Œã劥åœãªç¯å²å ã«ããããªã©ãæ€èšŒããŸãã
- äžè²«æ§ïŒããŒã¿ãç°ãªãããŒãã«ãããŒã¿ããŒã¹éã§äžè²«ããŠããããšãä¿èšŒããŸããäŸãã°ã顧客æ å ±ãCRMã·ã¹ãã ãšæ³šæåŠçã·ã¹ãã éã§åæãããå¿ èŠãããã·ããªãªãèããŠã¿ãŠãã ããããã¹ãã¯ãããã®ã·ã¹ãã éã®äžè²«æ§ãä¿èšŒããŸãã
- æå¹æ§ïŒããŒã¿ãäºåã«å®çŸ©ãããã«ãŒã«ãå¶çŽã«åŸã£ãŠããããšã確èªããŸããããã«ã¯ãããŒã¿åããã©ãŒããããç¯å²ãå«ãŸããŸããäŸãã°ãæŽæ°ãšããŠå®çŸ©ããããã£ãŒã«ãã«ããã¹ããå«ãŸããŠã¯ãªãããæ¥ä»ãã£ãŒã«ãã¯ç¹å®ã®ãã©ãŒãããïŒYYYY-MM-DDïŒã«åŸãå¿ èŠããããŸãã
- ä¿¡é Œæ§ïŒããŒã¿ãžã®ä¿¡é Œãç¯ããæ å ±ã«åºã¥ããæææ±ºå®ãå¯èœã«ããŸããé¢ä¿è ãããŒã¿ãä¿¡é Œããã°ãæŠç¥çèšç»ãæ¥åæ¹åã«ãã®ããŒã¿ãå©çšããå¯èœæ§ãé«ãŸããŸãã
- èŠå¶éµå®ïŒGDPRãHIPAAãPCI DSSãªã©ãæ©å¯ããŒã¿ã®ä¿è·ã矩åä»ããèŠå¶èŠä»¶ãçµç¹ãæºããã®ã«åœ¹ç«ã¡ãŸãããããã®èŠå¶ãéµå®ããªãå Žåãé«é¡ãªçœ°éãæ³çãªåœ±é¿ãæãå¯èœæ§ããããŸãã
ããŒã¿æŽåæ§å¶çŽã®çš®é¡
ããŒã¿æŽåæ§ã¯ãããŒã¿ããŒã¹ã«æ ŒçŽãããããŒã¿ã管çããã«ãŒã«ã§ãããæ§ã ãªæŽåæ§å¶çŽãéããŠåŒ·å¶ãããŸããäž»ãªçš®é¡ã¯ä»¥äžã®éãã§ãïŒ
- ãšã³ãã£ãã£æŽåæ§ïŒåããŒãã«ãäž»ããŒãæã¡ããã®äž»ããŒãäžæã§NULLã§ãªãããšãä¿èšŒããŸããããã«ãããéè€ããã¬ã³ãŒããæªèå¥ã®ã¬ã³ãŒããé²ããŸããäŸãã°ã
customersããŒãã«ã¯customer_idãäž»ããŒãšããŠæã¡ãå顧客ã¯äžæã§NULLã§ãªãIDãæã€å¿ èŠããããŸãã - ãã¡ã€ã³æŽåæ§ïŒããŒãã«ã®ååã«å¯Ÿããæå¹ãªå€ã®ç¯å²ãå®çŸ©ããŸããããã«ã¯ãããŒã¿åããã©ãŒããããèš±å¯ãããå€ãå«ãŸããŸããäŸãã°ã
genderåã®ãã¡ã€ã³ã¯('Male', 'Female', 'Other')ã§ãããå¯èœãªå€ããããã®éžæè¢ã«å¶éããŸããé»è©±çªå·ã®åã¯ç¹å®ã®ãã©ãŒãããïŒäŸïŒ+[åœã³ãŒã] [åžå€å±çª]-[çªå·]ïŒãæã€ãããããŸããã - åç
§æŽåæ§ïŒå€éšããŒã䜿çšããŠé¢é£ããŒãã«éã®äžè²«æ§ãç¶æããŸããããããŒãã«ã®å€éšããŒã¯å¥ã®ããŒãã«ã®äž»ããŒãåç
§ããããŒãã«éã®é¢ä¿ãæå¹ã§ããããšãä¿èšŒããŸããäŸãã°ã
ordersããŒãã«ã¯customersããŒãã«ã®customer_idãåç §ããå€éšããŒãæã€ããšãããããã¹ãŠã®æ³šæãæå¹ãªé¡§å®¢ã«é¢é£ä»ããããŠããããšãä¿èšŒããŸããåç §æŽåæ§å¶çŽã¯ãé¢é£ããŒãã«ã®æŽæ°ãåé€ãåŠçããéã«ãéèŠã§ããã°ãã°CASCADEãRESTRICTã«ãŒã«ãé¢ãããŸãã - ãŠãŒã¶ãŒå®çŸ©æŽåæ§ïŒç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ãããžãã¹èŠä»¶ã«åºæã®ã«ã¹ã¿ã ã«ãŒã«ã匷å¶ããŸãããããã®ã«ãŒã«ã¯ãã¹ãã¢ãããã·ãŒãžã£ãããªã¬ãŒããŸãã¯ã¢ããªã±ãŒã·ã§ã³å ã®æ€èšŒã«ãŒã«ã䜿çšããŠå®è£ ã§ããŸããäŸãã°ãå²åŒçã50%ãè¶ ããŠã¯ãªããªãããããã¯åŸæ¥å¡ã®çµŠäžã圹è·ãçµéšã«åºã¥ããŠç¹å®ã®ç¯å²å ã«ãªããã°ãªããªãããšãã£ãã«ãŒã«ãèããããŸãã
ããŒã¿æŽåæ§ã®ããã®ããŒã¿ããŒã¹ãã¹ãææ³
ããŒã¿æŽåæ§ã確ä¿ããããã«ãããã€ãã®ãã¹ãææ³ãçšããããšãã§ããŸãããããã®ææ³ã¯ãããŒã¿ã®æ§ã ãªåŽé¢ãæ€èšŒããæŽåæ§å¶çŽãé©åã«åŒ·å¶ãããŠããããšã確èªããããšã«çŠç¹ãåœãŠãŠããŸãããããã®ææ³ã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ïŒPostgreSQL, MySQL, Oracleãªã©ïŒã䜿çšããŠããããNoSQLããŒã¿ããŒã¹ïŒMongoDB, Cassandraãªã©ïŒã䜿çšããŠãããã«é¢ãããçããé©çšãããŸãããå ·äœçãªå®è£ ã¯ç°ãªããŸãã
1. ããŒã¿åãšãã©ãŒãããã®æ€èšŒ
ãã®ææ³ã¯ãååãæ£ããããŒã¿åãšãã©ãŒããããå«ãã§ããããšãæ€èšŒãããã®ã§ããããŒã¿ãå®çŸ©ããããã¡ã€ã³æŽåæ§å¶çŽã«æºæ ããŠããããšãä¿èšŒããŸããäžè¬çãªãã¹ãã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- ããŒã¿åãã§ãã¯ïŒåãæåŸ ãããããŒã¿åïŒäŸïŒæŽæ°ãæååãæ¥ä»ïŒãå«ãã§ããããšã確èªããŸãã
- ãã©ãŒããããã§ãã¯ïŒããŒã¿ãç¹å®ã®ãã©ãŒãããïŒäŸïŒæ¥ä»ãã©ãŒããããã¡ãŒã«ã¢ãã¬ã¹ãã©ãŒããããé»è©±çªå·ãã©ãŒãããïŒã«æºæ ããŠããããšãæ€èšŒããŸãã
- ç¯å²ãã§ãã¯ïŒå€ã蚱容ç¯å²å ïŒäŸïŒå¹Žéœ¢ã18æ³ãã65æ³ãäŸ¡æ Œã0ãã倧ããïŒã«ããããšã確èªããŸãã
- é·ããã§ãã¯ïŒæååãèš±å¯ãããæå€§é·ãè¶ ããŠããªãããšãä¿èšŒããŸãã
äŸïŒpriceåãdecimalãšããŠå®çŸ©ãããproductsããŒãã«ãèããŸããããŒã¿åæ€èšŒãã¹ãã¯ããã®åã«decimalå€ã®ã¿ãæ ŒçŽãããããšãä¿èšŒããŸããç¯å²ãã§ãã¯ã¯ãäŸ¡æ Œãåžžã«ãŒããã倧ããããšãæ€èšŒããŸãããã©ãŒããããã§ãã¯ã¯ã補åã³ãŒããç¹å®ã®ãã¿ãŒã³ïŒäŸïŒPRD-XXXXãããã§XXXXã¯4æ¡ã®æ°åïŒã«åŸãããšãæ€èšŒããããã«äœ¿çšãããããšããããŸãã
ã³ãŒãäŸ (SQL):
-- priceåã®ç¡å¹ãªããŒã¿åããã§ãã¯
SELECT * FROM products WHERE price NOT LIKE '%.%' AND price NOT LIKE '%[0-9]%';
-- 蚱容ç¯å²å€ã®äŸ¡æ Œããã§ãã¯
SELECT * FROM products WHERE price <= 0;
-- ç¡å¹ãªè£œåã³ãŒããã©ãŒãããããã§ãã¯
SELECT * FROM products WHERE product_code NOT LIKE 'PRD-[0-9][0-9][0-9][0-9]';
2. NULLå€ãã§ãã¯
ãã®ææ³ã¯ãNULLãèš±å¯ããªãåãNULLå€ãå«ãã§ããªãããšãæ€èšŒããŸãããšã³ãã£ãã£æŽåæ§å¶çŽã匷å¶ãããããšãä¿èšŒããŸããNULLå€ãã§ãã¯ã¯äž»ããŒãšå€éšããŒã«ãšã£ãŠæ¥µããŠéèŠã§ããäž»ããŒããªãå Žåã¯ãšã³ãã£ãã£æŽåæ§ã«éåããå€éšããŒããªãå Žåã¯åç §æŽåæ§ãç Žå£ããå¯èœæ§ããããŸãã
äŸïŒcustomersããŒãã«ã§ã¯ãcustomer_idïŒäž»ããŒïŒã¯æ±ºããŠNULLã§ãã£ãŠã¯ãªããŸãããNULLå€ãã§ãã¯ã¯ãcustomer_idãæ¬ èœããŠããã¬ã³ãŒããç¹å®ããŸãã
ã³ãŒãäŸ (SQL):
-- customer_idåã®NULLå€ããã§ãã¯
SELECT * FROM customers WHERE customer_id IS NULL;
3. äžææ§ãã§ãã¯
ãã®ææ³ã¯ãäžæãšããŠå®çŸ©ãããåãéè€ããå€ãå«ãã§ããªãããšãä¿èšŒããŸãããšã³ãã£ãã£æŽåæ§ã匷å¶ããããŒã¿ã®åé·æ§ãé²ããŸããäžææ§ãã§ãã¯ã¯ãäž»ããŒãã¡ãŒã«ã¢ãã¬ã¹ããŠãŒã¶ãŒåã«ãšã£ãŠç¹ã«éèŠã§ãã
äŸïŒusersããŒãã«ã§ã¯ãusernameåã¯äžæã§ããã¹ãã§ããäžææ§ãã§ãã¯ã¯ãéè€ãããŠãŒã¶ãŒåãæã€ã¬ã³ãŒããç¹å®ããŸãã
ã³ãŒãäŸ (SQL):
-- éè€ãããŠãŒã¶ãŒåããã§ãã¯
SELECT username, COUNT(*) FROM users GROUP BY username HAVING COUNT(*) > 1;
4. åç §æŽåæ§ãã§ãã¯
ãã®ææ³ã¯ãããããŒãã«ã®å€éšããŒãå¥ã®ããŒãã«ã®äž»ããŒãæ£ããåç §ããŠããããšãæ€èšŒããŸããããŒãã«éã®é¢ä¿ãæå¹ã§äžè²«ããŠããããšãä¿èšŒããŸããåç §æŽåæ§ãã§ãã¯ã«ã¯ã以äžã®æ€èšŒãå«ãŸããŸãïŒ
- å€éšããŒãåç §å ã®ããŒãã«ã«ååšããããšã
- å€éšããŒãå€ç«ããŠããªãããšïŒããªãã¡ãååšããªãäž»ããŒãåç §ããŠããªãããšïŒã
- 芪ããŒãã«ã§ã®æŽæ°ãåé€ããåããŒãã«ã«æ£ããäŒæãããããšïŒå®çŸ©ãããåç §æŽåæ§å¶çŽãäŸãã°CASCADE, SET NULL, RESTRICTã«åºã¥ãïŒã
äŸïŒordersããŒãã«ã«ã¯ãcustomersããŒãã«ãåç
§ããcustomer_idå€éšããŒããããŸããåç
§æŽåæ§ãã§ãã¯ã¯ãordersããŒãã«å
ã®ãã¹ãŠã®customer_idãcustomersããŒãã«ã«ååšããããšã確èªããŸãããŸããcustomersããŒãã«ãã顧客ãåé€ãããå Žåã®æåïŒäŸãã°ãé¢é£ããæ³šæãåé€ãããããNULLã«èšå®ãããããªã©ãå®çŸ©ãããå¶çŽã«å¿ããŠïŒããã¹ãããŸãã
ã³ãŒãäŸ (SQL):
-- ordersããŒãã«ã®å€ç«ããå€éšããŒããã§ãã¯
SELECT * FROM orders WHERE customer_id NOT IN (SELECT customer_id FROM customers);
-- CASCADEåé€ã®ãã¹ãäŸ:
-- 1. 顧客ãšãã®é¡§å®¢ã«é¢é£ããæ³šæãæ¿å
¥
-- 2. 顧客ãåé€
-- 3. 泚æãåé€ãããããšã確èª
-- SET NULLã®ãã¹ãäŸ:
-- 1. 顧客ãšãã®é¡§å®¢ã«é¢é£ããæ³šæãæ¿å
¥
-- 2. 顧客ãåé€
-- 3. 泚æã®customer_idãNULLã«èšå®ãããããšã確èª
5. ããžãã¹ã«ãŒã«æ€èšŒ
ãã®ææ³ã¯ãããŒã¿ããŒã¹ãç¹å®ã®ããžãã¹ã«ãŒã«ã«æºæ ããŠããããšãæ€èšŒããŸãããããã®ã«ãŒã«ã¯è€éãªå Žåããããæ€èšŒã«ã¯ã«ã¹ã¿ã ããžãã¯ãå¿ èŠã§ããããžãã¹ã«ãŒã«æ€èšŒã¯ãå€ãã®å Žåãã¹ãã¢ãããã·ãŒãžã£ãããªã¬ãŒããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®æ€èšŒã䜿çšããŸãããããã®ãã¹ãã¯ãããŒã¿ããŒã¹ãçµç¹ã®ããžãã¹ããžãã¯ãšããªã·ãŒãæ£ç¢ºã«åæ ããŠããããšãä¿èšŒããããã«æ¥µããŠéèŠã§ããããžãã¹ã«ãŒã«ã¯ãå²åŒèšç®ãåšåº«ç®¡çãäžä¿¡é床é¡ã®åŒ·å¶ãªã©ãå¹ åºãã·ããªãªãã«ããŒããããšãã§ããŸãã
äŸïŒããããžãã¹ã«ãŒã«ã§ã¯ã顧客ã®äžä¿¡é床é¡ãæé平忝åºé¡ã®10åãè¶ ããŠã¯ãªããªããšå®ããããŠãããšããŸããããžãã¹ã«ãŒã«æ€èšŒãã¹ãã¯ã顧客ã®äžä¿¡é床é¡ãæŽæ°ããéã«ãã®ã«ãŒã«ã匷å¶ãããããšãä¿èšŒããŸãã
ã³ãŒãäŸ (SQL - ã¹ãã¢ãããã·ãŒãžã£):
CREATE PROCEDURE ValidateCreditLimit
@CustomerID INT,
@NewCreditLimit DECIMAL
AS
BEGIN
-- é¡§å®¢ã®æé平忝åºé¡ãååŸ
DECLARE @AvgMonthlySpending DECIMAL;
SELECT @AvgMonthlySpending = AVG(OrderTotal)
FROM Orders
WHERE CustomerID = @CustomerID
AND OrderDate >= DATEADD(month, -12, GETDATE()); -- éå»12ã¶æ
-- æ°ããäžä¿¡é床é¡ãæé平忝åºé¡ã®10åãè¶
ããããã§ãã¯
IF @NewCreditLimit > (@AvgMonthlySpending * 10)
BEGIN
-- ã«ãŒã«ã«éåããå Žåã«ãšã©ãŒãçºçããã
RAISERROR('Credit limit exceeds the allowed limit.', 16, 1);
RETURN;
END
-- ã«ãŒã«ãæºããããå Žåã«äžä¿¡é床é¡ãæŽæ°
UPDATE Customers SET CreditLimit = @NewCreditLimit WHERE CustomerID = @CustomerID;
END;
6. ããŒã¿å€æãã¹ã
ãã®ææ³ã¯ãETLïŒExtract, Transform, LoadïŒããã»ã¹ãªã©ã®ããŒã¿å€æã®ãã¹ãã«çŠç¹ãåœãŠãŠããŸããETLããã»ã¹ã¯ã1ã€ä»¥äžã®ãœãŒã¹ã·ã¹ãã ããããŒã¿ãŠã§ã¢ããŠã¹ãä»ã®ã¿ãŒã²ããã·ã¹ãã ã«ããŒã¿ãç§»åãããŸããããŒã¿å€æãã¹ãã¯ãããŒã¿ãæ£ããæœåºã倿ãããŒããããããã»ã¹å šäœã§ããŒã¿æŽåæ§ãç¶æãããããšãä¿èšŒããŸããããŒã¿å€æãã¹ãã®äž»èŠãªåŽé¢ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- ããŒã¿ã®å®å šæ§ïŒãœãŒã¹ã·ã¹ãã ã®ãã¹ãŠã®ããŒã¿ãæœåºãããã¿ãŒã²ããã·ã¹ãã ã«ããŒããããããšãæ€èšŒããŸãã
- ããŒã¿ã®æ£ç¢ºæ§ïŒããŒã¿ãå®çŸ©ããã倿ã«ãŒã«ã«åŸã£ãŠæ£ãã倿ãããããšãä¿èšŒããŸãã
- ããŒã¿ã®äžè²«æ§ïŒãœãŒã¹ã·ã¹ãã ãšã¿ãŒã²ããã·ã¹ãã ã®éã§äžè²«æ§ãç¶æããŸããç¹ã«ããŒã¿ãéèšãŸãã¯èŠçŽãããå Žåã«éèŠã§ãã
- ããŒã¿ã®å質ïŒã¿ãŒã²ããã·ã¹ãã ã®ããŒã¿ããããŒã¿åããã©ãŒããããç¯å²ãªã©ã®å¿ èŠãªåè³ªåºæºãæºãããŠããããšãæ€èšŒããŸãã
äŸïŒããETLããã»ã¹ããè€æ°ã®å°åããŒã¿ããŒã¹ãã売äžããŒã¿ãæœåºããããŒã¿ãå ±éã®ãã©ãŒãããã«å€æããŠãäžå€®ã®ããŒã¿ãŠã§ã¢ããŠã¹ã«ããŒããããšããŸããããŒã¿å€æãã¹ãã§ã¯ããã¹ãŠã®å£²äžããŒã¿ãæœåºãããããšãããŒã¿ãæ£ãã倿ãããããšïŒäŸïŒé貚æç®ãåäœå€æïŒããããŠããŒã¿ããšã©ãŒãããŒã¿æå€±ãªãããŒã¿ãŠã§ã¢ããŠã¹ã«ããŒããããããšãæ€èšŒããŸãã
7. ããŒã¿ãã¹ãã³ã°ãšå¿ååãã¹ã
ãã®ææ³ã¯ããã©ã€ãã·ãŒãä¿è·ããGDPRãªã©ã®ããŒã¿ä¿è·èŠå¶ã«æºæ ããããã«ãæ©å¯ããŒã¿ãé©åã«ãã¹ãã³ã°ãŸãã¯å¿ååãããŠããããšãä¿èšŒããŸããããŒã¿ãã¹ãã³ã°ãšå¿ååãã¹ãã«ã¯ã以äžã®æ€èšŒãå«ãŸããŸãïŒ
- æ©å¯ããŒã¿ãéæ©å¯ããŒã¿ã«çœ®ãæããããŠããããšïŒäŸïŒå®åãä»®åã«çœ®ãæãããã¯ã¬ãžããã«ãŒãçªå·ã墚æ¶ãããïŒã
- ãã¹ãã³ã°ãšå¿ååã®æè¡ãå人ã®ãã©ã€ãã·ãŒä¿è·ã«å¹æçã§ããããšã
- ãã¹ãã³ã°ããã³å¿ååãããããŒã¿ãããã©ã€ãã·ãŒãæãªãããšãªããæå³ãããç®çïŒäŸïŒåæãã¬ããŒãäœæïŒã«åŒãç¶ã䜿çšã§ããããšã
äŸïŒå»çã¢ããªã±ãŒã·ã§ã³ã§ã¯ãæ£è ã®ååãäœæãç ç©¶ç®çã§äœ¿çšãããåã«ãã¹ãã³ã°ãŸãã¯å¿ååãããããšããããŸããããŒã¿ãã¹ãã³ã°ãšå¿ååãã¹ãã§ã¯ããã¹ãã³ã°æè¡ãæ£è ã®ãã©ã€ãã·ãŒä¿è·ã«å¹æçã§ããããšããããŠå¿ååãããããŒã¿ãå人ã®èº«å ãæããããšãªãçµ±èšåæã«åŒãç¶ã䜿çšã§ããããšãæ€èšŒããŸãã
ããŒã¿æŽåæ§ãã¹ãã®ãã¹ããã©ã¯ãã£ã¹
ããŒã¿æŽåæ§ã广çã«ç¢ºä¿ããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããïŒ
- æç¢ºãªããŒã¿æŽåæ§èŠä»¶ã®å®çŸ©ïŒããŒã¿ããŒã¹ã®åããŒãã«ãšåã«å¯ŸããŠãããŒã¿æŽåæ§èŠä»¶ãæç¢ºã«å®çŸ©ããŸããããã«ã¯ãããŒã¿åããã©ãŒããããç¯å²ãäžææ§å¶çŽãåç §æŽåæ§å¶çŽã®å®çŸ©ãå«ãŸããŸãããããã®èŠä»¶ãææžåããããšã§ããã¹ã¿ãŒã¯ããŒã¿ããŒã¹ã®æåŸ ãããåäœãçè§£ããé©åãªãã¹ãã±ãŒã¹ãèšèšã§ããŸãã
- ãã¹ãããŒã¿ç®¡çæŠç¥ã®å©çšïŒãã¹ãããŒã¿ãçŸå®çã§ãäžè²«æ§ããããæ¬çªããŒã¿ã代衚ãããã®ã§ããããšãä¿èšŒããããã®ãã¹ãããŒã¿ç®¡çæŠç¥ãçå®ããŸããããã«ã¯ãããžãã£ãã±ãŒã¹ãšãã¬ãã£ãã±ãŒã¹ãå«ãå¹ åºãã·ããªãªãã«ããŒãããã¹ãããŒã¿ã®çæãå«ãŸããŸãããã¹ãç°å¢ã§æ©å¯ããŒã¿ãä¿è·ããããã«ãããŒã¿ãã¹ãã³ã°æè¡ã®äœ¿çšãæ€èšããŠãã ããã
- ããŒã¿æŽåæ§ãã¹ãã®èªååïŒããŒã¿æŽåæ§ãã¹ããèªååããäžè²«ããŠå¹ççã«å®è¡ãããããã«ããŸãããã¹ããã¬ãŒã ã¯ãŒã¯ãããŒã«ã䜿çšããŠãSQLã¯ãšãªãã¹ãã¢ãããã·ãŒãžã£ããã®ä»ã®ããŒã¿ããŒã¹æäœã®å®è¡ãèªååããŸããèªååã¯ããã¥ãŒãã³ãšã©ãŒã®ãªã¹ã¯ãäœæžããããŒã¿æŽåæ§ãç¶ç¶çã«ç£èŠãããããšãä¿èšŒããŸãã
- 宿çãªããŒã¿ç£æ»ã®å®æœïŒå®æçãªããŒã¿ç£æ»ã宿œããŠãããŒã¿æŽåæ§ã®åé¡ãç¹å®ããä¿®æ£ããŸããããŒã¿ç£æ»ã«ã¯ãããŒã¿å質ã¡ããªã¯ã¹ã®ã¬ãã¥ãŒãããŒã¿ç°åžžã®ç¹å®ãããŒã¿æŽåæ§åé¡ã®æ ¹æ¬åå ã®èª¿æ»ãå«ãŸããŸãã宿çãªããŒã¿ç£æ»ã¯ãããŒã¿ããŒã¹å šäœã®å¥å šæ§ãšä¿¡é Œæ§ãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
- ããŒã¿ã¬ããã³ã¹ããªã·ãŒã®å®è£ ïŒããŒã¿å質ãšããŒã¿æŽåæ§ã管çããããã®åœ¹å²ã責任ãããã»ã¹ãå®çŸ©ããããŒã¿ã¬ããã³ã¹ããªã·ãŒã確ç«ããŸããããŒã¿ã¬ããã³ã¹ããªã·ãŒã¯ãããŒã¿å ¥åæ€èšŒãããŒã¿å€æãããŒã¿ã¹ãã¬ãŒãžãããŒã¿ã¢ã¯ã»ã¹ãªã©ã®åŽé¢ãã«ããŒããå¿ èŠããããŸãã匷åãªããŒã¿ã¬ããã³ã¹ããªã·ãŒãå®è£ ããããšã§ãããŒã¿ãäžè²«ããŠç®¡çãããããŒã¿ã©ã€ããµã€ã¯ã«å šäœã§ããŒã¿æŽåæ§ãç¶æãããããšãä¿èšŒãããŸãã
- ããŒã¿ããŒã¹ã¹ããŒãã®ããã®ããŒãžã§ã³ç®¡çã®äœ¿çšïŒããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããŠããŒã¿ããŒã¹ã¹ããŒãã®å€æŽã管çããããšã¯ãäžè²«æ§ãšãã¬ãŒãµããªãã£ãç¶æããããã«éèŠã§ããLiquibaseãFlywayã®ãããªããŒã«ã¯ãããŒã¿ããŒã¹ã¹ããŒãã®ç§»è¡ãèªååãã倿Žã管çãããæ¹æ³ã§é©çšãããããšãä¿èšŒããã®ã«åœ¹ç«ã¡ãŸããã¹ããŒãã®å€æŽã远跡ããããšã§ãã¹ããŒãã®å€æŽã«ãã£ãŠçºçããå¯èœæ§ã®ããããŒã¿æŽåæ§ã®åé¡ãç¹å®ãã解決ããããšã容æã«ãªããŸãã
- ããŒã¿ããŒã¹ãã°ã®ç£èŠïŒããŒã¿æŽåæ§ã«é¢é£ãããšã©ãŒãèŠåããªãããããŒã¿ããŒã¹ãã°ãç¶ç¶çã«ç£èŠããŸããããŒã¿ããŒã¹ãã°ã¯ãå¶çŽéåãããŒã¿å倿ãšã©ãŒãåç §æŽåæ§é害ãªã©ãããŒã¿æŽåæ§ã®åé¡ã«é¢ãã貎éãªæŽå¯ãæäŸããŸããããŒã¿ããŒã¹ãã°ãç£èŠããããšã§ãããžãã¹ãªãã¬ãŒã·ã§ã³ã«åœ±é¿ãäžããåã«ããŒã¿æŽåæ§ã®åé¡ãç©æ¥µçã«ç¹å®ãã察åŠããããšãã§ããŸãã
- CI/CDãã€ãã©ã€ã³ãžã®ãã¹ãã®çµ±åïŒããŒã¿æŽåæ§ãã¹ããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ããã³ç¶ç¶çããªããªãŒïŒCI/CDïŒãã€ãã©ã€ã³ã«çµ±åããŸããããã«ãããããŒã¿ããŒã¹ã¹ããŒããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«å€æŽãå ãããããã³ã«ãããŒã¿æŽåæ§ãã¹ããèªåçã«å®è¡ãããããã«ãªããŸããCI/CDãã€ãã©ã€ã³ã«ãã¹ããçµ±åããããšã§ãéçºã©ã€ããµã€ã¯ã«ã®æ©ã段éã§ããŒã¿æŽåæ§ã®åé¡ãæããæ¬çªç°å¢ãžã®äŒæãé²ãããšãã§ããŸãã
- ã¹ãã¢ãããã·ãŒãžã£ã§ã®ã¢ãµãŒã·ã§ã³ã®äœ¿çšïŒã¹ãã¢ãããã·ãŒãžã£å ã§ã¢ãµãŒã·ã§ã³ã䜿çšããŠãå®è¡æã«ããŒã¿æŽåæ§ãæ€èšŒããŸããã¢ãµãŒã·ã§ã³ã¯ãNULLå€ãäžææ§å¶çŽãåç §æŽåæ§éåãªã©ã®æ¡ä»¶ããã§ãã¯ããããã«äœ¿çšã§ããŸããã¢ãµãŒã·ã§ã³ã倱æããå Žåãããã¯å¯ŸåŠãå¿ èŠãªããŒã¿æŽåæ§ã®åé¡ãããããšã瀺ããŸãã
ããŒã¿ããŒã¹ãã¹ãã®ããã®ããŒã«
ããŒã¿ããŒã¹ãã¹ããšããŒã¿æŽåæ§æ€èšŒãæ¯æŽããããã€ãã®ããŒã«ããããŸãïŒ
- SQL Developer/SQLcl (Oracle): SQLã¯ãšãªã®å®è¡ããã¹ãã¹ã¯ãªããã®äœæãšå®è¡ãããŒã¿ã®æ€èšŒæ©èœãæäŸããŸãã
- MySQL Workbench: MySQLããŒã¿ããŒã¹ã®èšèšãéçºã管çã®ããã®ããŒã«ãæäŸããããŒã¿æ€èšŒãšãã¹ãã®æ©èœãå«ã¿ãŸãã
- pgAdmin (PostgreSQL): PostgreSQLçšã®äººæ°ã®ãããªãŒãã³ãœãŒã¹ã®ç®¡çã»éçºãã©ãããã©ãŒã ã§ãSQLã¯ãšãªã®å®è¡ãšããŒã¿æŽåæ§ã®æ€èšŒæ©èœããããŸãã
- DbFit: ã·ã³ãã«ã§èªã¿ããããã©ãŒãããã§ããŒã¿ããŒã¹ãã¹ããèšè¿°ã§ãããªãŒãã³ãœãŒã¹ã®ãã¹ããã¬ãŒã ã¯ãŒã¯ã§ãã
- tSQLt (SQL Server): SQL Serverçšã®ãŠããããã¹ããã¬ãŒã ã¯ãŒã¯ã§ãããŒã¿ããŒã¹ãªããžã§ã¯ãã®èªåãã¹ããäœæã»å®è¡ã§ããŸãã
- DataGrip (JetBrains): ããŒã¿ããŒã¹çšã®ã¯ãã¹ãã©ãããã©ãŒã IDEã§ãããŒã¿æ¢çŽ¢ãã¹ããŒã管çãã¯ãšãªå®è¡ã®ããã®é«åºŠãªæ©èœãæäŸããŸãã
- QuerySurge: ããŒã¿ãŠã§ã¢ããŠã¹ãšETLããã»ã¹ã®ãã¹ãèªååã«ç¹åããããŒã¿ãã¹ããœãªã¥ãŒã·ã§ã³ã§ãã
- Selenium/Cypress: äž»ã«Webã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã«äœ¿çšãããŸããããããã®ããŒã«ã¯ã¢ããªã±ãŒã·ã§ã³å±€ãéããŠããŒã¿ããŒã¹ã®çžäºäœçšããã¹ãããããã«ã䜿çšã§ããŸãã
çµè«
ããŒã¿æŽåæ§ã¯ãããŒã¿ããŒã¹ç®¡çãšã¢ããªã±ãŒã·ã§ã³éçºã®éèŠãªåŽé¢ã§ããå ç¢ãªããŒã¿ããŒã¹ãã¹ãææ³ãå®è£ ããããšã§ãçµç¹ã¯ããŒã¿ã®æ£ç¢ºæ§ãäžè²«æ§ãä¿¡é Œæ§ã確ä¿ã§ããŸããããã«ãããããè¯ãæææ±ºå®ãæ¹åãããäºæ¥éå¶ã匷åãããèŠå¶éµå®ã«ã€ãªãããŸããããŒã¿æŽåæ§ãã¹ããžã®æè³ã¯ãããŒã¿ã®å šäœçãªå質ãšä¿¡é Œæ§ãã²ããŠã¯çµç¹ã®æåãžã®æè³ã§ãã
ããŒã¿æŽåæ§ã¯äžåºŠããã®ã¿ã¹ã¯ã§ã¯ãªããç¶ç¶çãªããã»ã¹ã§ããããšãå¿ããªãã§ãã ãããç¶ç¶çãªç£èŠã宿çãªç£æ»ãç©æ¥µçãªã¡ã³ããã³ã¹ã¯ãããŒã¿ãã¯ãªãŒã³ã§ä¿¡é Œæ§ã®é«ãç¶æ ã«ä¿ã€ããã«äžå¯æ¬ ã§ãããããã®ãã©ã¯ãã£ã¹ãåãå ¥ããããšã§ãçµç¹ã¯ããŒã¿é§ååã®ã€ãããŒã·ã§ã³ãšæé·ã®ããã®åŒ·åºãªåºç€ãç¯ãããšãã§ããŸãã