묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
AWS EC2 우분투 서버
안녕하세요?AWS EC2 우분투 서버를 사용하고 있습니다.Docker를 사용하면 AWS service(aws codeBuild , aws codeDeploy)를 사용하지 않고 CI/CD가 가능한가요? 코드는 react/next 입니다. 감사합니다.
-
해결됨카프카 완벽 가이드 - 코어편
Fetcher 관련 질문드립니다.
안녕하세요 선생님 양질의 강의 너무 감사하게 잘듣고 있습니다.다름이아니라 강의를 듣던 중 궁금한 부분이 있어서 글을 남기게 되었습니다.Broker로 부터 통신을 한 후에 pendingCompletion(ConcurrentLinkedQueue) 에 response를 적재를 하고적재된 pendingCompletion 기준으로 Fetcher가 데이터를 가져오게 되는데 이 과정에서 Fetcher는 별도의 스레드로 동작하는지요?"Consumer Fetcher관련 주요 파라미터와 Fetcher 메커니즘의 이해: 13:22"
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
redis를 이용한 컨테이너 이해 질문
안녕하세요 강사님 좋은 강의 감사드립니다.docker run redis 명령어를 통해 redis 서버를 작동시키고 해당 컨테이너 안에서 redis-cli가 정삭적으로 연결되어 ping pong이 일어나는 것을 확인했습니다.제가 궁금한 것은 127.0.0.1:6379 가 현재 제 컴퓨터의 로컬에서 redis가 실행되고 있는 건가요..?cmd에서 netstat 을 입력해봐도 6379 포트로 listening하고 있는 프로세스를 확인할 수가 없는데 답변 주시면 감사드리겠습니다.(너무 기초적인 것을 질문했다면 죄송합니다,,)
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
커넥트 스타트시 오류
안녕하세요! 선생님 강의 잘 듣고 있습니다.다름이 아니라커넥트 내부 토픽이해 - connect0offsets, connect-status, connect-config 강의 실습 중spool 커넥터를 띄워놓고 spooldir csv 메세지 보내는 과정에서커넥터가 정상 작동을 안하는 것 같아이부분을 반복했더니 커넥트 기동중 spool 커넥터에 에러가 잡히는데 혹시 해결방안 여쭤봐도 될까요 ? 커넥트 기동시 뜨는 에러 로그입니다. path annotation 이 비었다고 하는 것같은데 새로 지정을 어디서 해야 할까요?org.apache.kafka.connect.errors.ConnectException: Failed to start connector: csv_spooldir_source at org.apache.kafka.connect.runtime.distributed.DistributedHerder.lambda$startConnector$25(DistributedHerder.java:1461) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:334) at org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:140) at org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:117) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: org.apache.kafka.connect.errors.ConnectException: Failed to transition connector csv_spooldir_source to state STARTED ... 8 more Caused by: java.lang.IllegalStateException: Could not find any input file(s) to infer schema from. at com.google.common.base.Preconditions.checkState(Preconditions.java:510) at com.github.jcustenborder.kafka.connect.spooldir.AbstractSpoolDirSourceConnector.start(AbstractSpoolDirSourceConnector.java:63) at org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:184) at org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:209) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:348) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:331) ... 7 more 3월 08, 2023 1:54:32 오후 org.glassfish.jersey.internal.Errors logErrors 경고: The following warnings have been detected: WARNING: The (sub)resource method listLoggers in org.apache.kafka.connect.runtime.rest.resources.LoggingResource contains empty path annotation. WARNING: The (sub)resource method createConnector in org.apache.kafka.connect.runtime.rest.resources.ConnectorsResource contains empty path annotation. WARNING: The (sub)resource method listConnectors in org.apache.kafka.connect.runtime.rest.resources.ConnectorsResource contains empty path annotation. WARNING: The (sub)resource method listConnectorPlugins in org.apache.kafka.connect.runtime.rest.resources.ConnectorPluginsResource contains empty path annotation. WARNING: The (sub)resource method serverInfo in org.apache.kafka.connect.runtime.rest.resources.RootResource contains empty path annotation. [2023-03-08 13:54:32,670] INFO Started o.e.j.s.ServletContextHandler@1e253c9d{/,null,AVAILABLE} (org.eclipse.jetty.server.handler.ContextHandler:915) [2023-03-08 13:54:32,671] INFO REST resources initialized; server is started and ready to handle requests (org.apache.kafka.connect.runtime.rest.RestServer:303) [2023-03-08 13:54:32,671] INFO Kafka Connect started (org.apache.kafka.connect.runtime.Connect:57) min@min-VirtualBox:~$ curl -X GET http://localhost:8083/connectors/csv_spooldir_source/status | jq '.' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1375 100 1375 0 0 8647 0 --:--:-- --:--:-- --:--:-- 8647 { "name": "csv_spooldir_source", "connector": { "state": "FAILED", "worker_id": "127.0.1.1:8083", "trace": "java.lang.IllegalStateException: Could not find any input file(s) to infer schema from.\n\tat com.google.common.base.Preconditions.checkState(Preconditions.java:510)\n\tat com.github.jcustenborder.kafka.connect.spooldir.AbstractSpoolDirSourceConnector.start(AbstractSpoolDirSourceConnector.java:63)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:184)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:209)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:348)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:331)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:140)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:117)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\n" }, "tasks": [], "type": "source" }
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
'멀티스레드 컨슈머 애플리케이션' 편을 보고 질문드립니다~
안녕하세요 데브원영님. 수준높은 강의 항상 잘보고있습니다. 다름아니라, '멀티스레드 컨슈머 애플리케이션' 강의를 듣고 관련 내용을 찾아보던 와중에 '메세지 역전현상' 이라는 이슈를 찾았습니다.멀티 스레드 혹은 멀티 프로세스로 동작할경우, 파티션이 하나더라도 스레드의 작업종료 시간이 전부 다르기때문에 순서보장이 필요한 시스템에 치명적이라는 내용이였습니다. 이 문제를 해결하기 위해 메세지에 key와 partioner 인터페이스를 구현하더라도 파티션 수와 스레드 수가 1:1 매칭이 아닐 경우 순서가 틀어지거나, Key 설계를 잘못할 경우 특정파티션으로 데이터가 몰리게되어 scale-out을 한 의미가 퇴색 될 것 같아서요.'순서보장 + (다중 파티션 + 다중 컨슈머 설계로 성능확보)' 가 필요한 시스템에서 '메세지 역전현상' 문제를 해결 할수 있는 방법이 있을까요?.. 발행된 메세지가 DB에 적재되있을 경우, 최종 일관성(순서보장문제)을 DB에 조회하여 해결할 수 있을 것 같은데요!.. 저장소에 적재되지 않는 메세지일 경우 해당문제를 어떻게 풀어야될지 잘 모르겠네요 ... 관련하여 답변 부탁드리겠습니다!.. 확인 감사합니다.~
-
미해결카프카 완벽 가이드 - 코어편
Active segment가 지워진다면
Active Segment도 정리 대상이 되어서 지워지고 난 후에는 새로 Active Segment를 자동으로 생성해주나요?뭔가 개발자가 알아야하는 문제점은 없을지 궁금합니다.
-
해결됨15일간의 빅데이터 파일럿 프로젝트
5 빅데이터 클러스터 구성2 -기본SW 설치 7분 23초 주키퍼 정
주키퍼 설정을 data node인 서버 02로 선택하는 건가요? 말이 끊겨서 안들리네요.그리고 이유를 알고 싶습니다.
-
미해결카프카 완벽 가이드 - 코어편
자바 클라이언트 메세지 전송 테스트 실패
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.카프카를 기동해 두고, simple-topic 을 만들었습니다.네트워크 설정도 강의와 같이 설정했습니다.그리고 자바 클라이언트에서 producer로 메세지 전송을 하면 실패하고 있습니다. 다음과 같은 에러 메세지를 받고있습니다.SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.윈도우 클라이언트에서 리눅스 가상 머신으로 핑은 잘 됩니다.리눅스 머신에서 프로듀서 콘슈머 잘 작동도 하구요.
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 배치 데이터 처리
- 카프카를 공부하시면서 생긴 질문들을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 잘 듣고 있습니다! 좋은 강의 올려주셔서 감사합니다. 빅데이터 아키텍쳐의 종류와 카프카의 미래 강의 9:00 전후의 카프카가 배치 데이터를 처리하기 위해 제공하는 기능에 대해서 질문이 있습니다.슬라이드의 설명으로 이해하기에는 기존의 배치 데이터는 각 시점의 스냅샷 데이터이지만, 카프카는 변환 기록 로그를 남김으로써 기존의 배치 데이터 스냅샷을 매번 만들 필요 없이 로그로 특정 시점의 데이터를 만들 수 있다 라고 이해했습니다.강의 내용으로는 카프카에서 배치 데이터를 가져오기 위해 기존의 배치 데이터 컨셉인 배치 데이터 스냅샷과, 변환 기록 로그 이렇게 둘 다의 정보를 사용해서 배치 데이터를 표현한다 라고 이해 했습니다. 1, 2번중 어떤게 더 적절하게 이해했는지 궁금합니다.감사합니다!
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker-compose up 시 오류
다른 질문도 참고해보았지만 도저히 해결이 안되네요 아래는 오류 로그입니다.ui-MacBookAir docker-compose-app % docker-compose up [+] Running 2/0 ⠿ Container docker-compose-app-node-app-1 Created 0.0s ⠿ Container docker-compose-app-redis-server-1 Recreated 0.0s Attaching to docker-compose-app-node-app-1, docker-compose-app-redis-server-1 docker-compose-app-redis-server-1 | 1:C 04 Mar 2023 11:43:49.189 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo docker-compose-app-redis-server-1 | 1:C 04 Mar 2023 11:43:49.189 # Redis version=7.0.9, bits=64, commit=00000000, modified=0, pid=1, just started docker-compose-app-redis-server-1 | 1:C 04 Mar 2023 11:43:49.189 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf docker-compose-app-redis-server-1 | 1:M 04 Mar 2023 11:43:49.189 * monotonic clock: POSIX clock_gettime docker-compose-app-redis-server-1 | 1:M 04 Mar 2023 11:43:49.190 * Running mode=standalone, port=6379. docker-compose-app-redis-server-1 | 1:M 04 Mar 2023 11:43:49.190 # Server initialized docker-compose-app-redis-server-1 | 1:M 04 Mar 2023 11:43:49.192 * Ready to accept connections docker-compose-app-node-app-1 | server is running docker-compose-app-node-app-1 | events.js:174 docker-compose-app-node-app-1 | throw er; // Unhandled 'error' event docker-compose-app-node-app-1 | ^ docker-compose-app-node-app-1 | docker-compose-app-node-app-1 | Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 docker-compose-app-node-app-1 | at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) docker-compose-app-node-app-1 | Emitted 'error' event at: docker-compose-app-node-app-1 | at RedisClient.on_error (/usr/src/app/node_modules/redis/index.js:341:14) docker-compose-app-node-app-1 | at Socket.<anonymous> (/usr/src/app/node_modules/redis/index.js:222:14) docker-compose-app-node-app-1 | at Socket.emit (events.js:198:13) docker-compose-app-node-app-1 | at emitErrorNT (internal/streams/destroy.js:91:8) docker-compose-app-node-app-1 | at emitErrorAndCloseNT (internal/streams/destroy.js:59:3) docker-compose-app-node-app-1 | at process._tickCallback (internal/process/next_tick.js:63:19) docker-compose-app-node-app-1 exited with code 1 ^CGracefully stopping... (press Ctrl+C again to f 나머지는 소스 파일입니다.version: "3" services: redis-server: image: "redis" node-app: build: . ports: - "8080:8080"FROM node WORKDIR /usr/src/app COPY ./ ./ RUN npm install CMD ["node", "server.js"]{ "name": "docker-compose-app", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "start": "node server.js", "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { "express": "4.17.1", "redis": "3.0.2" }, "author": "", "license": "ISC" } const express = require("express"); const redis = require("redis"); // 레디스 클라이언트 생성 const client = redis.createClient({ socket: { host: "redis-server", port: 6379 } }); const app = express(); app.get("/", async (req, res) => { await client.connect(); let number = await client.get("number"); if(number === null){ number = 0; } console.log(`Number : ${number}`); res.send(`숫자가 1씩 올라갑니다. 숫자 : ${number}`); await client.set("number", parseInt(number) + 1); await client.disconnect(); }); app.listen(8080); console.log("server is running");강의 진도를 나갈 수가 없어서 답답합니다.혹시 해결하신분들은 있으신가요..
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
pymysql db data입력시 부터 진행이...
안녕하세요검색도 많이 해보고 지우고 깔고 3일간 별거 다해봤지만 해결이 안되 도움 요청드립니다 ㅠ선생님 flask강의 듣다 db에서 막혀서 이 강의 듣고 잇는데 같은곳에서 또 부딛혔어요 ㅠ 제가 뭘 잘못하고 있을까요...==test code==import pymysqlimport pymysql db = pymysql.connect(host='localhost', port=3306, user='root', passwd='funcoding', db= 'ecommerce', charset= 'utf8') # ecommerce = db.cursor() db ==error ===raise errorclass(errno, errval) pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")비번 수정방법 등등 알아보다가 다시 깔고 mysql설정시 비번 funcoding 으로 바꿔서 다시 깔았는데도 똑같습니다 ㅠ iterm 에서 해본거➜ ~ cd /usr/local/mysql ➜ mysql cd bin ➜ bin ls ibd2sdi mysql_upgrade innochecksum mysqladmin libprotobuf-lite.3.19.4.dylib mysqlbinlog libprotobuf.3.19.4.dylib mysqlcheck lz4_decompress mysqld my_print_defaults mysqld-debug myisam_ftdump mysqld_multi myisamchk mysqld_safe myisamlog mysqldump myisampack mysqldumpslow mysql mysqlimport mysql_config mysqlpump mysql_config_editor mysqlshow mysql_migrate_keyring mysqlslap mysql_secure_installation perror mysql_ssl_rsa_setup zlib_decompress mysql_tzinfo_to_sql ➜ bin ./mysql ERROR 1045 (28000): Access denied for user 'hyun'@'localhost' (using password: NO) ➜ bin ./mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 도와주세요 ㅠ
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
mysql 입문 질의드려요
안녕하세요 M2 mac 환경입니다. mysql 및 mysql banch 설치하였고 mysql banch에서 실행 버튼만 누르면 자동으로 프로그램이 종료됩니다 ㅠ mysql 접속이 안되서 그런건가 하고 확인해보니까 mac시스템 설정에서 mysql에 들어가서 start mysql server을 클리하면 계속 start stop (초록 빨강)으로 깜빡거리는 현상도 있음을 발견햇어요 ㅠ 열심히 구글링했는데 도저히 해결책을 찾지 못해 글남겨요 ㅠ 8.0.32 arm64 설치했고요 ㅠ
-
미해결카프카 완벽 가이드 - 코어편
멀티브로커에서 consumer 사용하기
안녕하세요 강의에서 멀티브로커 상에서 producer로 데이터를 집어 넣는 것은 실습을 하는데요데이터를 읽을 때는 kafka-dump-log를 사용해서 읽습니다. 혹시 consumer를 사용해가지고는 멀티 브로커 상에서는 읽을 수 없나요? confluent kafka community 버전에서는 불가능한 건가요? 가능하다면 스크립트를 알려주시면 감사하겠습니다.
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
질문있습니다!
안녕하세요 수업 질문입니다.저만 그런건지 age index를 생성하기 전인데도 불구하고,age로 sort 할 경우 성능이 오히려 3배 가량 향상됩니다.. ㅜㅜsort를 작성할 경우 수업과 동일하게 sort_key_generator는 나타나지 않고, documents returned도 0 으로 표기 됩니다.하지만 explain 탭이 아닌 documents탭에서는 정렬방식이 적용 되어 문제없이 조회되는 걸로 보아 문법을 작성을 잘못 한것 같지않고, sort를 작성하면 explain이 제대로 나타나지 않아 헤매이고있습니다.index의 장점을 직접 체험하기 위해 데이터는 약 100만개 정도 생성한 상태로 따라해보는데, 의도와는 다른 현상이 나타나 질문드립니다!!
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
브로커, 토픽, 파티션관계
안녕하세요!조금 애매한 부분이 있어서요!-브로커 3대토픽 2개파티션 - rf 설정 2- 로 만약에 설정을 한다면, 각 브로커에 토픽 2개씩 설정이 된거고, 파티션은 2개로 설정했기에 브로커 3개에서 라운드로빈으로 설정이 되는건가요?이게 .. 어렵네요. 브로커 3대. 딱설정하고.. 토픽이 2개라고한다면 각 브로커마다 토픽이 테이블처럼 있을거고..이제 파티션을 라운드로빈으로 돌려서 설정을 해야하는데.. 이게맞는거지 ㅠㅠㅠ
-
해결됨스파크 머신러닝 완벽 가이드 - Part 1
ModuleNotFoundError : No module named 'mmlspark' - 20230218
안녕하세요 spark 공부하면서 취준하고 있는 대학생입니다.좋은 강의 제공해주셔서 감사합니다 :-)다름이 아니라, 코드에 궁금한 점이 생겨서 문의 드립니다.mmlspark lightgbm 설치 후에 아래에 있는 코드를 실행 해야 하나요? Hyperlink로 접속을 해 봤는데 오류가 있는 거 같습니다.스파크 프레임워크로 처음 공부를 해 봐서 제가 틀린 걸 수도 있습니다. 도움 부탁드립니다:-)
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
커넥트(소스), 커넥트(싱크)
안녕하세요!커넥트(소스), 커넥트(싱크)에 대한 이해가 부족합니다.DB 연결시, 커넥션풀과 같은 느낌이라고 생각하면 되는건가요? 아니면 그 풀안의 한개의 커넥션이라고 생각하면 되는걸까요? 아니면 전혀 다른 개념인지요. 감사힙낟!
-
미해결카프카 완벽 가이드 - 코어편
멀티 브로커에서 브로커 중지되는 문제
안녕하세요 강사님, 유익한 강의 감사드립니다.멀티 노드 카프카 클러스터 부분을 EC2(t2.micro) 인스턴스에서 실습중에 문제가 생겨 질문드립니다.1. 주키퍼 기동2. 브로커1 기동 3. 브로커2 기동4. 브로커3 기동순서로 실행중에 브로커3을 기동하면 브로커 1이 중지되는 현상입니다.다시 브로커1을 기동하면 브로커2가 중지되는걸 보면 브로커 3대가 함께 실행되지 않는것 같습니다.바쁘시겠지만 도움 주시면 정말 감사드리겠습니다!
-
미해결스파크 머신러닝 완벽 가이드 - Part 1
TrainValidationSplit과 randomSplit 사용 질문
안녕하세요. 좋은 강의 감사합니다.TrainValidationSplit 수강 중 질문이 있습니다.TrainValidationSplit를 이용하여 학습과 검증 비율을 trainRatio 파라미터를 이용하여 나누게 되는데, TrainValidationSplit을 사용할 시 randomSplit은 사용할 필요가 없나요? 아니면 사용하는 경우가 있을까요? CrossValidator은 교차 검증 k fold 방식으로 알고 있는데, randomSplit에서 나눈 비율로 교차 검증을 진행하는 걸로 이해하면 될까요?예를 들면 randomSplit 0.8(학습) 0.2(검증) 으로 나누었다면, 해당 비율로 교차검증을 진행하는지 궁금합니다.마지막으로 현재 업무에서 스파크 스트리밍을 사용하고 있고 scala 기반으로 되어 있기 때문에 scala를 이용한 ml 도입을 고려하고 있습니다. 이때 강의에서 진행하는 pyspark과 비교하여 제공하지 않는 기능이라던지 고려해야 할 사항이 있을까요? 감사합니다!
-
미해결데이터베이스 중급(Modeling)
두 FK를 묶어서 PK로 하는 경우에...
안녕하세요, 강사님.강의에서 '학생이 과목을 수강신청'하는 경우에는두 FK를 묶어서 PK로 사용할 것이 옳잖아요?그러면 학생과 수강신청은1:M 관계인가요? 1:1 관계인가요?