As you can see from the comments, there are two distinct approaches: event-based models, where each event (whether "in" or "out") is a distinct record; and consistent in / out models, where every "in" must be followed by an "out" in the same record.
Which one is better depends on how it'll be used. Does your punch system know for sure the difference between a punch in and a punch out? Some (like card-swipe entry systems) do not. If yours doesn't, you can get into trouble with the event based system because the first time someone forgets to punch out, they've suddenly worked for 24 hours, and then they're on 16 hour days from then out. Whoops.
If they do know the difference between in and out, event-based is simpler to capture, and has less chance of interfering with human behavior (many entry card systems, like in parking garages, assume the in/out model, and they can get confused if you use one person's badge to exit and another person's to exit).
Generally, though, the simplicity you get up front results in more complexity in the algorithm to figure out what to do with the resulting punch data in cases of anomalies. If you really need it to be in in/out pairs, and you can enforce that at the front end (say, by not letting people punch in again until they punch out), then the in/out single record method will make your life on the back end much, much simpler.