๐Ÿ”ฌ ์šฐ๋ฆฌ ๋ฐ˜ ์ธก์ • ์‹คํ—˜์‹ค

์กฐ๋ณ„ ์ธก์ •๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๋ฐ˜ ์ „์ฒด ๊ทธ๋ž˜ํ”„๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค

๐Ÿ“Š ์šฐ๋ฆฌ ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๊ทธ๋ž˜ํ”„

๊ฐ€๋กœ = ๋ถ€ํ”ผ(mL) ยท ์„ธ๋กœ = ์งˆ๋Ÿ‰(g)
-
์ธก์ • ์ˆ˜
-
๋ถ€ํ”ผ ํ‰๊ท 
-
์งˆ๋Ÿ‰ ํ‰๊ท 
๐Ÿ†š ๊ตฌ๊ธ€ํผยทํŒจ๋“ค๋ ›๊ณผ ๋‹ค๋ฅธ ์ 
๊ตฌ๊ธ€ํผ์€ ์ˆซ์ž๋ฅผ '๋ฐ›๊ธฐ'๋งŒ ํ•˜๊ณ , ๊ทธ๋ž˜ํ”„๋Š” ๋‚˜์ค‘์— ์„ ์ƒ๋‹˜์ด ์ง์ ‘ ๊ทธ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ์—ฌ๋Ÿฌ ์กฐ๊ฐ€ ๋„ฃ์„์ˆ˜๋ก ํ•˜๋‚˜์˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ž๋™ ์™„์„ฑ๋ผ์š” โ€” ๊ทธ ์ž๋ฆฌ์—์„œ ๊ฒฝํ–ฅ์„ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค.
๐Ÿง‘โ€๐Ÿซ ๊ต์‚ฌ์šฉ โ€” ์ฒ˜์Œ 1ํšŒ ์„ค์ • & ์ถ• ๋ฐ”๊พธ๊ธฐ (ํŽผ์น˜๊ธฐ)

โ‘  ์‹ค์‹œ๊ฐ„ ๊ณต์œ  ์ผœ๊ธฐ: ์•„๋ž˜ SQL์„ Supabase์˜ SQL Editor์— ๋ถ™์—ฌ๋„ฃ๊ณ  Run ํ•˜๋ฉด, ๋ชจ๋“  ๊ธฐ๊ธฐ๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. (์•ˆ ํ•˜๋ฉด ์ด ๊ธฐ๊ธฐ ์•ˆ์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ์—ฐ์Šต ๋ชจ๋“œ)

create table if not exists science_measure (
  id uuid primary key default gen_random_uuid(),
  created_at timestamptz not null default now(),
  room text not null default 'demo',
  team text,
  x double precision not null,
  y double precision not null
);
create index if not exists science_measure_room_idx
  on science_measure(room, created_at desc);
alter table science_measure enable row level security;
drop policy if exists "anon insert science" on science_measure;
create policy "anon insert science" on science_measure
  for insert to anon
  with check ( char_length(room) between 1 and 40
    and x between -1000000 and 1000000
    and y between -1000000 and 1000000 );
drop policy if exists "anon read science" on science_measure;
create policy "anon read science" on science_measure
  for select to anon using ( true );

โ‘ก ์‹คํ—˜์— ๋งž๊ฒŒ ์ถ• ๋ฐ”๊พธ๊ธฐ: ์ฃผ์†Œ ๋’ค์— ๋ถ™์ด์„ธ์š” โ€”
?x=์˜จ๋„(โ„ƒ)&y=๋…น์€ ์–‘(g) ยท ?x=์ „์••(V)&y=์ „๋ฅ˜(A) ์ฒ˜๋Ÿผ. ๋ฐ˜ ๊ตฌ๋ถ„์€ ?room=3-2 (์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์€ &๋กœ ์—ฐ๊ฒฐ).

โ‘ข ๋ฐ์ดํ„ฐ ์ง€์šฐ๊ธฐ: SQL Editor์—์„œ delete from science_measure;