[BaaS] Supabase foreign key (์™ธ๋ž˜ ํ‚ค) ํ™œ์šฉํ•ด ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ณ  ์กฐํšŒํ•˜๊ธฐ

2024. 3. 21. 01:52ยท๐Ÿชด DB & BaaS
SMALL

0320 ํ”„๋กœ์ ํŠธ ์ค‘ (์•ฝ๊ฐ„ ์ˆ˜์ •์˜ˆ์ • ~_ใ… )

 

์ €๋ฒˆ ๊ธ€์—์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ํ…Œ์ด๋ธ” ์ƒ์„ฑ๊นŒ์ง€ ํ•ด๋ดค์—ˆ๊ณ  ์ด์ œ ์™ธ๋ž˜ ํ‚ค๋„ ํ™œ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค..!!

DB๋ฅผ ์จ๋ดค๋‹ค๋ฉด ์ž˜ ์•Œ๊ฒ ์ง€๋งŒ, SQL์„ ์‚ด์ง๋งŒ ์จ๋ดค๋˜ ๋‚˜๋Š” ์ต์ˆ™ํ•˜์ง„ ์•Š์•˜๋‹ค. ..ใ… ใ… 

 

foreign key (์™ธ๋ž˜ ํ‚ค) ๋ž€?

 

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์™ธ๋ž˜ ํ‚ค๋Š” ํ•œ ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ ์ค‘ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค๋กœ, 

Supabase์—์„œ foreign key๋Š” ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ์ด๋ฉฐ, ์ด foreign key๋กœ ์—ฐ๊ฒฐ๋œ ๋‘ ํ…Œ์ด๋ธ”์—์„œ ํ•œ ํ…Œ์ด๋ธ”์˜ ํ–‰์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์ฐธ์กฐํ•œ๋‹ค.

๋‘ ํ…Œ์ด๋ธ”์€ ์™ธ๋ž˜ ํ‚ค๋ฅผ ํ†ตํ•ด join๋  ์ˆ˜ ์žˆ๋‹ค.

 

(A foreign key is a field in one table that uniquely identifies a row of another table.)

(In Supabase, foreign keys are used to establish a link between two tables, creating a relationship where one table's row references another.)

(Tables can be "joined" together using Foreign Keys.)

 

 

 

 

์•„๋ž˜์ฝ”๋“œ๊ฐ€ ์™ธ๋ž˜ํ‚คํ™œ์šฉํ•ด communityPosts ํ…Œ์ด๋ธ”์—์„œ๋„, communityComments ํ…Œ์ด๋ธ”์—์„œ๋„ ์ž๋ฃŒ๋ฅผ ๊ฐ€์ ธ์˜จ ๊ฒƒ!

 

postId ์™ธ๋ž˜ํ‚ค๋กœ ์—ฐ๊ฒฐ๋˜์–ด์„œ, postId ํ•„๋“œ์— ํ•ด๋‹นํ•˜๋Š” ํ–‰ ๋ชจ๋‘ * ๋ฅผ communityPosts ์—์„œ ๊ฐ€์ ธ์˜ค๊ณ ,

์ด ๋™์ผํ•œ postId ํ•„๋“œ์˜ ๊ฐ’์„ ๊ฐ€์ง„ communityComments ํ…Œ์ด๋ธ”์˜ ํ–‰๋“ค์„ ๋ชจ๋‘ * ๊ฐ€์ ธ์™€์„œ comments ๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์—ฌ์ค€๋‹ค.

const CommunityDetailPage = async ({ params }: { params: { id: string } }) => {
  const postId = params.id;
  const supabase = createClient();

  // * ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ hook ์ฒ˜๋Ÿผ ๋บผ ์ง€
  // ๊ฒŒ์‹œ๊ธ€๊ณผ ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€ ๋Œ“๊ธ€๋“ค ๊ฐ€์ ธ์˜ค๊ธฐ
  const fetchPost = async () => {
    // : Promise<communityPosts> ํƒ€์ž… ์™ธ๋ž˜ํ‚ค comment ๊นŒ์ง€ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผ
    try {
      const { data: posts, error } = await supabase
        .from('communityPosts')
        .select('*, comments:communityComments(*)')
        .eq('postId', postId);
      if (error) throw error;
      return posts![0];
    } catch (error) {
      console.error();
      throw error;
    }
  };
SMALL

'๐Ÿชด DB & BaaS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BaaS] Supabase - Stroage RLS policy ์„ค์ •ํ•ด์ค˜์•ผ ๋ชจ๋‘ ์ด๋ฏธ์ง€๋“ฑ๋ก ๊ฐ€๋Šฅ!  (0) 2024.03.24
[BaaS] Supabase - rpc, SQL editor๋ฅผ ํ™œ์šฉํ•ด ๋ฐฐ์—ด ํƒ€์ž…์˜ ์ปฌ๋Ÿผ์— (๋ฌธ์ž์—ด) ์›์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ  (2) 2024.03.22
[BaaS/TS] Supabase - Supabase CLI๋กœ Database์˜ ํƒ€์ž… ์ƒ์„ฑํ•˜๊ธฐ  (0) 2024.03.20
[BaaS/Next.js] Supabase ์†Œ๊ฐœ / next.js ํ”„๋กœ์ ํŠธ์™€ ํ•จ๊ป˜ ์„ค์น˜ํ•ด์„œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์™€๋ณด๊ธฐ  (0) 2024.03.20
'๐Ÿชด DB & BaaS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BaaS] Supabase - Stroage RLS policy ์„ค์ •ํ•ด์ค˜์•ผ ๋ชจ๋‘ ์ด๋ฏธ์ง€๋“ฑ๋ก ๊ฐ€๋Šฅ!
  • [BaaS] Supabase - rpc, SQL editor๋ฅผ ํ™œ์šฉํ•ด ๋ฐฐ์—ด ํƒ€์ž…์˜ ์ปฌ๋Ÿผ์— (๋ฌธ์ž์—ด) ์›์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ
  • [BaaS/TS] Supabase - Supabase CLI๋กœ Database์˜ ํƒ€์ž… ์ƒ์„ฑํ•˜๊ธฐ
  • [BaaS/Next.js] Supabase ์†Œ๊ฐœ / next.js ํ”„๋กœ์ ํŠธ์™€ ํ•จ๊ป˜ ์„ค์น˜ํ•ด์„œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์™€๋ณด๊ธฐ
๋ จ๋””
๋ จ๋””
FE - ๊ฐœ๋ฐœ ๊ณต๋ถ€์˜ ๊ธฐ๋ก
  • ๋ จ๋””
    Ryeon's Devstory
    ๋ จ๋””
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (69)
      • ๐Ÿชด JavaScript & TypeScript (11)
        • ๐Ÿงฉ Algorithm (6)
      • ๐Ÿชด React (12)
      • ๐Ÿชด Next.js (8)
      • ๐Ÿชด HTML & CSS (2)
      • ๐Ÿชด DB & BaaS (5)
      • ๐Ÿชด Git &Github (0)
      • โœ๏ธ ํ”„๋กœ์ ํŠธ ๊ณผ์ • & ํšŒ๊ณ  (18)
      • โœ๏ธ Today what I Learned _T.. (11)
      • ๐Ÿ•Š๏ธ IT ์•„ํ‹ฐํด (0)
      • etc. (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • My Github ๐Ÿ˜บ
    • ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ๐ŸŽต๐ŸŽง (์ผ์ƒ,์Œ์•… ๋“ฑ)
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    BAAS
    react
    Array.filter
    State
    Next.js
    NVM
    ์ปดํฌ๋„ŒํŠธ๋ถ„๋ฆฌ
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    useEffect
    reacthook
    useMutation
    Supabase
    ์—๋Ÿฌ
    tailwind
    Vite
    ๋ Œ๋”๋งํŒจํ„ด
    axios
    ์˜ค๋ธ”์™„
    ๋ฆฌ์•กํŠธ์ฟผ๋ฆฌ
    route handler
    ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
    json-server
    ํ‹ฐ์Šคํ† ๋ฆฌ๋ธ”๋กœ๊ทธ์Šคํ‚จ
    props
    fetch
    ๋น„๋™๊ธฐํ†ต์‹ 
    ์˜์กด์„ฑ๋ฐฐ์—ด
    ์›น๊ฐœ๋ฐœ ๊ธฐ์ดˆ
    reactquery
    ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
๋ จ๋””
[BaaS] Supabase foreign key (์™ธ๋ž˜ ํ‚ค) ํ™œ์šฉํ•ด ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ณ  ์กฐํšŒํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”