자바스크립트를 활성화 해주세요

d051 Powershell Pode 모듈로 Api제작하기 스토리 1

 ·  ☕ 3 min read

Powershell로 API 프로젝트 어떻게 하는 지 교재를 적어가다가다, 블로그 포스트로도 작성하면 좋겠다고 생각해 시리즈를 시작하게 되었습니다.

Database

물론 이해하시겠지만,

  • 우선 여러개의 개체가 나오므로 Releation Database를, File Database를 채용하였습니다.
  • sqlite를 사용하고, 필요하면 clusted RDBMS에 Migration하는 방식을 채택해 갑니다.
  • 채팅이나 Twitter같이 많은 트랜잭션을 사용해하면 그때에 Document Type이나 NoSQL을 고려합니다.
    • 샤딩은 그 뒤에나 생각합니다.
  • hot record는 고려하지 않으므로 Caching도 제외합니다.

적당한 테이블을 다음의 url에서 차용하였습니다.

http://www.databaseanswers.org/data_models/restaurant_bookings/index.htm

d051_pode_api_modeling.png

ERD 읽을 때 주의점

  • ERD에 foreign key 쓰는 것은 생략하고 넘어갈 때가 있습니다.
    • 그렇다고 foreign key 가 없는 것은 아닙니다.
    • 삼발이 처럼 생긴 화살표가 붙어있는 테이블에는 반대쪽 테이블의 키를 foreign key로 넣어주세요
  • 작성시간, 갱신시간, 논리 삭제플래그 등도 생략하고 넘어갈 때도 있습니다.
    • 이것도 팀의 code convention에 맞게 넣어주세요.
    • 저희 팀은 created_at이나, updated_at, deleted 등의 이름으로 넣습니다.
  • 테이블이름이나 컬럼이름도 팀의 code convention에 맞춰주세요.
    • 저희는 테이블은 t_xxxx 의 형식으로 넣습니다.
    • 다대다 맵핑용 테이블의 이름은 저는 t_(작은 속성)_in_(큰 속성) 과 같은 형식으로 적습니다.
      • 예를 들면 t_colors_in_clothes 와 같은 느낌입니다.
    • id 컬럼은 그냥 id로 하고 있습니다.

DDL

ERD의 느낌에 맞춰 작성해 본 DDL은 다음과 같습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
create table t_note(
    id integer primary key autoincrement,
    content text
);

insert into t_note(content) values (
'http://www.databaseanswers.org/data_models/restaurant_bookings/index.htm'
);
create table t_customer (
    id integer primary key,
    firstname text,
    surname text not null,
    phone_number text,
    mobile_number text,
    email text,
    other_details text
);
create table t_booking (
    id integer primary key,
    date_of_booking text not null,
    number_in_party int not null,
    customer_id int not null
        constraint t_booking_customer_id_fk references t_customer(id),
    table_id int
        constraint t_table_table_id_fk references t_table(id)
);
create table t_table (
    id integer primary key,
    table_number int,
    table_details text
);

drop table t_order;
create table t_order (
    id integer primary key,
    order_data_time text not null,
    table_id integer
        constraint t_order_table_id_fk references t_table(id),
    staff_id integer
        constraint t_order_staff_id_fk references t_staff(id)
);
create table t_staff (
    id integer primary key,
    first_name text,
    last_name text not null,
    staff_code text
        constraint t_staff_staff_code_fk references t_staff_role(code)
);
create table t_staff_role (
    code text primary key,
    description text
);
create table t_order_in_menuitem (
    id integer primary key,
    qualntity int not null,
    comments text,
    order_id integer constraint t_order_in_menuitem_order_id_fk references t_order(id)
);
create table t_menuitem (
    id integer primary key,
    price int,
    description text,
    menu_id integer not null constraint t_menuitem_menu_id_fk references t_menu(id)
);
create table t_menu (
    id integer primary key,
    menu_date text
);
create table t_ingredient_in_menuitem (
    id integer primary key,
    quantity int not null,
    menuitem_id integer not null constraint t_menuitem_menuitem_id_fk references t_menuitem(id),
    ingredients_id integer not null constraint t_ingredient_in_menuitem_ingredients_id_fk references t_ingredients(id)

);
create table t_ingredients (
    id integer primary key,
    name text not null,
    ingredienttype_code integer not null constraint t_ingredient_ingredienttype_id_fk references t_ingredienttype(code)
);
create table t_ingredienttype (
    code text primary key,
    description text
);

빨리 작성하는 팁

  • ddl은 GUI보다 create table 문을 쓰는 것이 더 빠릅니다.
    • jetbrains의 datagrip에 익숙해 지면 편합니다.

다음에는

  • CRUD 모듈을 만들어 보죠
  • Repository는 powershell로 구현하는 것은 verbose하므로 생략하겠습니다.

ref

공유하기

tkim
글쓴이
tkim
Software Engineer